ZQuest Classic Coverage Report


Directory: src/
File: src/zq/zq_custom.cpp
Date: 2024-08-03 06:15:10
Exec Total Coverage
Lines: 836 3840 21.8%
Functions: 3 80 3.8%
Branches: 60 2127 2.8%

Line Branch Exec Source
1 #include <map>
2 #include <cstring>
3 #include <stdio.h>
4 #include <cstring>
5
6 #include "base/files.h"
7 #include "base/qrs.h"
8 #include "base/packfile.h"
9 #include "base/gui.h"
10 #include "qst.h"
11 #include "zc/zc_custom.h"
12 #include "zq/zq_custom.h"
13 #include "tiles.h"
14 #include "zq/zq_tiles.h"
15 #include "zq/zq_misc.h"
16 #include "zq/zquest.h"
17 #include "items.h"
18 #include "base/zsys.h"
19 #include "sfx.h"
20 #include "init.h"
21 #include "defdata.h"
22 #include "zc/ffscript.h"
23 #include "dialog/itemeditor.h"
24 #include "dialog/misc_sfx.h"
25 #include "dialog/misc_sprs.h"
26 #include "dialog/info.h"
27 #include "dialog/spritedata.h"
28 #include "dialog/info_lister.h"
29 #include "zinfo.h"
30 extern FFScript FFCore;
31
32 extern int32_t ex;
33 extern void reset_itembuf(itemdata *item, int32_t id);
34 extern const char *sfxlist(int32_t index, int32_t *list_size);
35 // zq_subscr.cpp
36 extern int32_t sstype_drop_proc(int32_t msg,DIALOG *d,int32_t c);
37
38 extern int32_t biw_cnt;
39
40 extern ZModule zcm;
41 extern zcmodule moduledata;
42
43
44 #ifdef _MSC_VER
45 #define stricmp _stricmp
46 #endif
47
48
49 int32_t hero_animation_speed = 1; //lower is faster animation
50
51 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c);
52
53 int32_t d_cstile_proc(int32_t msg,DIALOG *d,int32_t c)
54 {
55 //these are here to bypass compiler warnings about unused arguments
56 c=c;
57
58 switch(msg)
59 {
60 case MSG_CLICK:
61 {
62 int32_t f = 0;
63 int32_t t = d->d1;
64 int32_t cs = d->d2;
65
66 if((CHECK_CTRL_CMD)
67 ? select_tile_2(t,f,1,cs,true)
68 : select_tile(t,f,1,cs,true))
69 {
70 d->d1 = t;
71 d->d2 = cs;
72 return D_REDRAW;
73 }
74 }
75 break;
76
77 case MSG_DRAW:
78 d->w = 36;
79 d->h = 36;
80
81 BITMAP *buf = create_bitmap_ex(8,20,20);
82 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
83
84 if(buf && bigbmp)
85 {
86 clear_bitmap(buf);
87
88 if(d->d1)
89 overtile16(buf,d->d1,2,2,d->d2,0);
90
91 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-2, d->h-2);
92 destroy_bitmap(buf);
93 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
94 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
95 destroy_bitmap(bigbmp);
96 }
97
98 // text_mode(d->bg);
99 FONT *fonty = font;
100 textprintf_ex(screen,fonty,d->x+d->w,d->y+2,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"Tile: %d",d->d1);
101 textprintf_ex(screen,fonty,d->x+d->w,d->y+text_height(fonty)+3,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"CSet: %d",d->d2);
102 break;
103 }
104
105 return D_O_K;
106 }
107
108 4 void large_dialog(DIALOG *d)
109 {
110 4 large_dialog(d, 1.5f);
111 4 }
112
113 4 void large_dialog(DIALOG *d, float RESIZE_AMT)
114 {
115
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 if(d[0].d1 == 0)
116 {
117 4 d[0].d1 = 1;
118 4 int32_t oldwidth = d[0].w;
119 4 int32_t oldheight = d[0].h;
120 4 int32_t oldx = d[0].x;
121 4 int32_t oldy = d[0].y;
122 4 d[0].x -= int32_t(float(d[0].w)/RESIZE_AMT);
123 4 d[0].y -= int32_t(float(d[0].h)/RESIZE_AMT);
124 4 d[0].w = int32_t(float(d[0].w)*RESIZE_AMT);
125 4 d[0].h = int32_t(float(d[0].h)*RESIZE_AMT);
126
127
2/2
✓ Branch 0 taken 204 times.
✓ Branch 1 taken 4 times.
208 for(int32_t i=1; d[i].proc!=NULL; i++)
128 {
129 // Place elements horizontally
130 204 double xpc = ((double)(d[i].x - oldx) / (double)oldwidth);
131 204 d[i].x = int32_t(d[0].x + (xpc*double(d[0].w)));
132
133 // Horizontally resize elements
134
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
135 {
136 d[i].x += (int32_t)(float(d[i].w)/4.f);
137 }
138
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
204 else if(d[i].proc == d_comboframe_proc)
139 {
140 d[i].w *= 2;
141 d[i].w -= 4;
142 }
143
3/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 204 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 204 times.
204 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
144 {
145 d[i].w *= 2;
146 }
147
3/4
✓ Branch 0 taken 132 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 132 times.
204 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
148 72 d[i].w = int32_t(d[i].w*1.5);
149 132 else d[i].w = int32_t(float(d[i].w)*RESIZE_AMT);
150
151 // Place elements vertically
152 204 double ypc = ((double)(d[i].y - oldy) / (double)oldheight);
153 204 d[i].y = int32_t(d[0].y + (ypc*double(d[0].h)));
154
155 // Vertically resize elements
156
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
157 {
158 }
159
4/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
204 else if(d[i].proc == jwin_edit_proc || d[i].proc == jwin_check_proc || d[i].proc == jwin_checkfont_proc)
160 {
161 8 d[i].h = int32_t((double)d[i].h*1.5);
162 8 }
163
5/10
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 196 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 196 times.
392 else if(d[i].proc == jwin_droplist_proc || d[i].proc == d_ndroplist_proc || d[i].proc == d_idroplist_proc || d[i].proc == d_nidroplist_proc || d[i].proc == d_dropdmaplist_proc
164
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
196 || d[i].proc == jwin_as_droplist_proc || d[i].proc == d_ffcombolist_proc || d[i].proc == sstype_drop_proc
165
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 || d[i].proc == d_comboalist_proc)
166 {
167 d[i].y += int32_t((double)d[i].h*0.25);
168 d[i].h = int32_t((double)d[i].h*1.25);
169 }
170
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == d_comboframe_proc)
171 {
172 d[i].h *= 2;
173 d[i].h -= 4;
174 }
175
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
196 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
176 {
177 d[i].h *= 2;
178 }
179
3/4
✓ Branch 0 taken 124 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 124 times.
196 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
180 72 d[i].h = int32_t(d[i].h*1.5);
181 124 else d[i].h = int32_t(float(d[i].h)*RESIZE_AMT);
182
183 // Fix frames
184
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc == jwin_frame_proc)
185 {
186 d[i].x++;
187 d[i].y++;
188 d[i].w-=4;
189 d[i].h-=4;
190 }
191 204 }
192 4 }
193
194
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 204 times.
208 for(int32_t i=1; d[i].proc != NULL; i++)
195 {
196
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc==jwin_slider_proc)
197 continue;
198
199 // Bigger font
200
5/8
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✓ Branch 3 taken 104 times.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
304 bool bigfontproc = (d[i].proc != jwin_droplist_proc && d[i].proc != jwin_abclist_proc && d[i].proc != d_wlist_proc && d[i].proc != jwin_list_proc && d[i].proc != d_dmaplist_proc
201
5/10
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 && d[i].proc != d_dropdmaplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_wclist_proc && d[i].proc != d_ndroplist_proc
202
6/12
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
100 && d[i].proc != d_idroplist_proc && d[i].proc != d_nidroplist_proc && d[i].proc != jwin_as_droplist_proc && d[i].proc != d_ffcombolist_proc && d[i].proc != d_enelist_proc && d[i].proc != sstype_drop_proc
203
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 100 times.
100 && d[i].proc != d_comboalist_proc);
204
205
3/4
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 104 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100 times.
204 if(bigfontproc && !d[i].dp2)
206 {
207 100 d[i].dp2 = get_zc_font(font_lfont_l);
208 100 }
209
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 104 times.
104 else if(!bigfontproc)
210 {
211 104 ((ListData *) d[i].dp)->font = &a4fonts[font_lfont_l];
212 104 }
213
214 // Make checkboxes work
215
2/2
✓ Branch 0 taken 196 times.
✓ Branch 1 taken 8 times.
204 if(d[i].proc == jwin_check_proc)
216 8 d[i].proc = jwin_checkfont_proc;
217
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == jwin_radio_proc)
218 d[i].proc = jwin_radiofont_proc;
219 204 }
220
221 4 jwin_center_dialog(d);
222 4 }
223
224 9 static ListData weapon_list(weaponlist_num, &a4fonts[font_pfont]);
225
226 const char *defenselist(int32_t index, int32_t *list_size)
227 {
228 if(index>=0)
229 {
230 bound(index,0,edLAST-1);
231
232 switch(index)
233 {
234 case 0:
235 return "(None)";
236
237 case edHALFDAMAGE:
238 return "1/2 Damage";
239
240 case edQUARTDAMAGE:
241 return "1/4 Damage";
242
243
244 case edSTUNONLY:
245 return "Stun";
246
247 case edSTUNORCHINK:
248 return "Stun Or Block";
249
250 case edSTUNORIGNORE:
251 return "Stun Or Ignore";
252
253 case edCHINKL1:
254 return "Block If < 1";
255
256 case edCHINKL2:
257 return "Block If < 2";
258
259 case edCHINKL4:
260 return "Block If < 4";
261
262 case edCHINKL6:
263 return "Block If < 6";
264
265 case edCHINKL8:
266 return "Block If < 8";
267
268
269
270 case edCHINK:
271 return "Block";
272
273 case edIGNOREL1:
274 return "Ignore If < 1";
275
276 case edIGNORE:
277 return "Ignore";
278
279
280
281
282 case ed1HKO:
283 return "One-Hit-Kill";
284
285 case edCHINKL10: //If damage is less than 10
286 return "Block if Power < 10";
287
288 case ed2x: //Double damage
289 return "Double Damage";
290 case ed3x: //Triple Damage
291 return "Triple Damage";
292 case ed4x: //4x damage
293 return "Quadruple Damage";
294
295 case edHEAL: //recover the weapon damage in HP
296 return "Enemy Gains HP = Damage";
297
298 case edTRIGGERSECRETS: //Triggers screen secrets.
299 return "Trigger Screen Secrets";
300
301 case edSPLIT:
302 return "Split";
303 case edREPLACE:
304 return "Transform";
305
306 case edSUMMON:
307 return "Summon";
308
309 case edEXPLODESMALL:
310 return "Bomb Explosion";
311
312 case edEXPLODELARGE:
313 return "Superbomb Explosion";
314
315 case edEXPLODEHARMLESS:
316 return "Harmless Explosion";
317
318 case edFREEZE: //Hit by ice..
319 return "Freeze Solid";
320
321 case edSWITCH:
322 return "Switch w/ Player";
323 default:
324 return "[reserved]";
325 }
326 }
327
328 *list_size = edLAST;
329 return NULL;
330 }
331
332 9 static ListData defense_list(defenselist, &font);
333
334 const char *itemscriptdroplist(int32_t index, int32_t *list_size)
335 {
336 if(index<0)
337 {
338 *list_size = biitems_cnt;
339 return NULL;
340 }
341
342 return biitems[index].first.c_str();
343 }
344
345 9 ListData itemscript_list(itemscriptdroplist, &a4fonts[font_pfont]);
346
347 const char *itemspritescriptdroplist(int32_t index, int32_t *list_size)
348 {
349 if(index<0)
350 {
351 *list_size = biitemsprites_cnt;
352 return NULL;
353 }
354
355 return biditemsprites[index].first.c_str();
356 }
357
358 9 ListData itemspritescript_list(itemspritescriptdroplist, &a4fonts[font_pfont]);
359
360 const char *lweaponscriptdroplist(int32_t index, int32_t *list_size)
361 {
362 if(index<0)
363 {
364 *list_size = bilweapons_cnt;
365 return NULL;
366 }
367
368 return bilweapons[index].first.c_str();
369 }
370
371 9 ListData lweaponscript_list(lweaponscriptdroplist, &a4fonts[font_pfont]);
372
373 void edit_itemdata(int32_t index)
374 {
375 call_item_editor(index);
376 }
377
378 int32_t readoneitem(PACKFILE *f, int32_t index)
379 {
380 dword section_version = 0;
381 dword section_cversion = 0;
382 int32_t zversion = 0;
383 int32_t zbuild = 0;
384 itemdata tempitem;
385 memset(&tempitem, 0, sizeof(itemdata));
386 //reset_itembuf(&tempitem,i);
387
388
389 char istring[64]={0};
390 //section version info
391 if(!p_igetl(&zversion,f))
392 {
393 return 0;
394 }
395 if(!p_igetl(&zbuild,f))
396 {
397 return 0;
398 }
399
400 if(!p_igetw(&section_version,f))
401 {
402 return 0;
403 }
404
405 if(!p_igetw(&section_cversion,f))
406 {
407 return 0;
408 }
409 al_trace("readoneitem section_version: %d\n", section_version);
410 al_trace("readoneitem section_cversion: %d\n", section_cversion);
411
412 if ( zversion > ZELDA_VERSION )
413 {
414 al_trace("Cannot read .zitem packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
415 return 0;
416 }
417 else if ( ( section_version > V_ITEMS ) || ( section_version == V_ITEMS && section_cversion < CV_ITEMS ) )
418 {
419 al_trace("Cannot read .zitem packfile made using V_ITEMS (%d) subversion (%d)\n", section_version, section_cversion);
420 return 0;
421
422 }
423 else
424 {
425 al_trace("Reading a .zitem packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
426 }
427
428 if(!pfread(&istring, 64, f))
429 {
430 return 0;
431 }
432
433 if(!p_igetl(&tempitem.tile,f))
434 {
435 return 0;
436 }
437
438 if(!p_getc(&tempitem.misc_flags,f))
439 {
440 return 0;
441 }
442
443 if(!p_getc(&tempitem.csets,f))
444 {
445 return 0;
446 }
447
448 if(!p_getc(&tempitem.frames,f))
449 {
450 return 0;
451 }
452
453 if(!p_getc(&tempitem.speed,f))
454 {
455 return 0;
456 }
457
458 if(!p_getc(&tempitem.delay,f))
459 {
460 return 0;
461 }
462
463 if(!p_igetl(&tempitem.ltm,f))
464 {
465 return 0;
466 }
467
468 if(!p_igetl(&tempitem.family,f))
469 {
470 return 0;
471 }
472
473 if(!p_getc(&tempitem.fam_type,f))
474 {
475 return 0;
476 }
477
478 if(!p_igetl(&tempitem.power,f))
479 {
480 return 0;
481 }
482
483 if(!p_igetl(&tempitem.flags,f))
484 {
485 return 0;
486 }
487
488 if(!p_igetw(&tempitem.script,f))
489 {
490 return 0;
491 }
492
493 if(!p_getc(&tempitem.count,f))
494 {
495 return 0;
496 }
497
498 if(!p_igetw(&tempitem.amount,f))
499 {
500 return 0;
501 }
502
503 if(!p_igetw(&tempitem.collect_script,f))
504 {
505 return 0;
506 }
507
508 if(!p_igetw(&tempitem.setmax,f))
509 {
510 return 0;
511 }
512
513 if(!p_igetw(&tempitem.max,f))
514 {
515 return 0;
516 }
517
518 if(!p_getc(&tempitem.playsound,f))
519 {
520 return 0;
521 }
522
523 for(int32_t j=0; j<8; j++)
524 {
525 if(!p_igetl(&tempitem.initiald[j],f))
526 {
527 return 0;
528 }
529 }
530
531 for(int32_t j=0; j<2; j++)
532 {
533 if(!p_getc(&tempitem.initiala[j],f))
534 {
535 return 0;
536 }
537 }
538
539 if(!p_getc(&tempitem.wpn,f))
540 {
541 return 0;
542 }
543
544 if(!p_getc(&tempitem.wpn2,f))
545 {
546 return 0;
547 }
548
549 if(!p_getc(&tempitem.wpn3,f))
550 {
551 return 0;
552 }
553
554 if(!p_getc(&tempitem.wpn4,f))
555 {
556 return 0;
557 }
558
559 if(!p_getc(&tempitem.wpn5,f))
560 {
561 return 0;
562 }
563
564 if(!p_getc(&tempitem.wpn6,f))
565 {
566 return 0;
567 }
568
569 if(!p_getc(&tempitem.wpn7,f))
570 {
571 return 0;
572 }
573
574 if(!p_getc(&tempitem.wpn8,f))
575 {
576 return 0;
577 }
578
579 if(!p_getc(&tempitem.wpn9,f))
580 {
581 return 0;
582 }
583
584 if(!p_getc(&tempitem.wpn10,f))
585 {
586 return 0;
587 }
588
589 if(!p_getc(&tempitem.pickup_hearts,f))
590 {
591 return 0;
592 }
593
594 if(!p_igetl(&tempitem.misc1,f))
595 {
596 return 0;
597 }
598
599 if(!p_igetl(&tempitem.misc2,f))
600 {
601 return 0;
602 }
603
604 if(section_version < 53)
605 {
606 byte tempbyte;
607 if(!p_getc(&tempbyte,f))
608 {
609 return 0;
610 }
611 tempitem.cost_amount[0] = tempbyte;
612 switch(tempitem.family)
613 {
614 case itype_arrow:
615 case itype_bomb:
616 case itype_sbomb:
617 tempitem.cost_amount[1] = 1;
618 break;
619 default:
620 tempitem.cost_amount[1] = 0;
621 }
622 }
623 else
624 {
625 for(auto q = 0; q < 2; ++q)
626 {
627 if(!p_igetw(&tempitem.cost_amount[q],f))
628 {
629 return 0;
630 }
631 }
632 }
633
634 if(!p_igetl(&tempitem.misc3,f))
635 {
636 return 0;
637 }
638
639 if(!p_igetl(&tempitem.misc4,f))
640 {
641 return 0;
642 }
643
644 if(!p_igetl(&tempitem.misc5,f))
645 {
646 return 0;
647 }
648
649 if(!p_igetl(&tempitem.misc6,f))
650 {
651 return 0;
652 }
653
654 if(!p_igetl(&tempitem.misc7,f))
655 {
656 return 0;
657 }
658
659 if(!p_igetl(&tempitem.misc8,f))
660 {
661 return 0;
662 }
663
664 if(!p_igetl(&tempitem.misc9,f))
665 {
666 return 0;
667 }
668
669 if(!p_igetl(&tempitem.misc10,f))
670 {
671 return 0;
672 }
673
674 if(!p_getc(&tempitem.usesound,f))
675 {
676 return 0;
677 }
678
679 if(!p_getc(&tempitem.usesound2,f))
680 {
681 return 0;
682 }
683
684 if ( zversion >= 0x255 )
685 {
686 if ( section_version >= 45 )
687 {
688 //New itemdata vars -Z
689 //! version 27
690
691 if(!p_getc(&tempitem.useweapon,f))
692 {
693 return 0;
694 }
695 if(!p_getc(&tempitem.usedefence,f))
696 {
697 return 0;
698 }
699 if(!p_igetl(&tempitem.weaprange,f))
700 {
701 return 0;
702 }
703 if(!p_igetl(&tempitem.weapduration,f))
704 {
705 return 0;
706 }
707 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
708 if(!p_igetl(&tempitem.weap_pattern[q],f))
709 {
710 return 0;
711 }
712 }
713 //version 28
714 if(!p_igetl(&tempitem.duplicates,f))
715 {
716 return 0;
717 }
718 for ( int32_t q = 0; q < INITIAL_D; q++ )
719 {
720 if(!p_igetl(&tempitem.weap_initiald[q],f))
721 {
722 return 0;
723 }
724 }
725 for ( int32_t q = 0; q < INITIAL_A; q++ )
726 {
727 if(!p_getc(&tempitem.weap_initiala[q],f))
728 {
729 return 0;
730 }
731 }
732
733 if(!p_getc(&tempitem.drawlayer,f))
734 {
735 return 0;
736 }
737
738
739 if(!p_igetl(&tempitem.hxofs,f))
740 {
741 return 0;
742 }
743 if(!p_igetl(&tempitem.hyofs,f))
744 {
745 return 0;
746 }
747 if(!p_igetl(&tempitem.hxsz,f))
748 {
749 return 0;
750 }
751 if(!p_igetl(&tempitem.hysz,f))
752 {
753 return 0;
754 }
755 if(!p_igetl(&tempitem.hzsz,f))
756 {
757 return 0;
758 }
759 if(!p_igetl(&tempitem.xofs,f))
760 {
761 return 0;
762 }
763 if(!p_igetl(&tempitem.yofs,f))
764 {
765 return 0;
766 }
767 if(!p_igetl(&tempitem.weap_hxofs,f))
768 {
769 return 0;
770 }
771 if(!p_igetl(&tempitem.weap_hyofs,f))
772 {
773 return 0;
774 }
775 if(!p_igetl(&tempitem.weap_hxsz,f))
776 {
777 return 0;
778 }
779 if(!p_igetl(&tempitem.weap_hysz,f))
780 {
781 return 0;
782 }
783 if(!p_igetl(&tempitem.weap_hzsz,f))
784 {
785 return 0;
786 }
787 if(!p_igetl(&tempitem.weap_xofs,f))
788 {
789 return 0;
790 }
791 if(!p_igetl(&tempitem.weap_yofs,f))
792 {
793 return 0;
794 }
795 if(!p_igetw(&tempitem.weaponscript,f))
796 {
797 return 0;
798 }
799 if(!p_igetl(&tempitem.wpnsprite,f))
800 {
801 return 0;
802 }
803 size_t num_cost_tmr = (section_version > 52 ? 2 : 1);
804 for(size_t q = 0; q < num_cost_tmr; ++q)
805 {
806 if(!p_igetl(&tempitem.magiccosttimer[q],f))
807 {
808 return 0;
809 }
810 }
811 if(!p_igetl(&tempitem.overrideFLAGS,f))
812 {
813 return 0;
814 }
815 if(!p_igetl(&tempitem.tilew,f))
816 {
817 return 0;
818 }
819 if(!p_igetl(&tempitem.tileh,f))
820 {
821 return 0;
822 }
823 if(!p_igetl(&tempitem.weapoverrideFLAGS,f))
824 {
825 return 0;
826 }
827 if(!p_igetl(&tempitem.weap_tilew,f))
828 {
829 return 0;
830 }
831 if(!p_igetl(&tempitem.weap_tileh,f))
832 {
833 return 0;
834 }
835 if(!p_igetl(&tempitem.pickup,f))
836 {
837 return 0;
838 }
839 if(!p_igetw(&tempitem.pstring,f))
840 {
841 return 0;
842 }
843 if(!p_igetw(&tempitem.pickup_string_flags,f))
844 {
845 return 0;
846 }
847
848 size_t num_cost_ctr = (section_version > 52 ? 2 : 1);
849 for(size_t q = 0; q < num_cost_ctr; ++q)
850 {
851 if(!p_getc(&tempitem.cost_counter[q],f))
852 {
853 return 0;
854 }
855 }
856
857 //InitD[] labels
858 for ( int32_t q = 0; q < 8; q++ )
859 {
860 for ( int32_t w = 0; w < 65; w++ )
861 {
862 if(!p_getc(&tempitem.initD_label[q][w],f))
863 {
864 return 0;
865 }
866 }
867 for ( int32_t w = 0; w < 65; w++ )
868 {
869 if(!p_getc(&tempitem.weapon_initD_label[q][w],f))
870 {
871 return 0;
872 }
873 }
874 for ( int32_t w = 0; w < 65; w++ )
875 {
876 if(!p_getc(&tempitem.sprite_initD_label[q][w],f))
877 {
878 return 0;
879 }
880 }
881 if(!p_igetl(&tempitem.sprite_initiald[q],f))
882 {
883 return 0;
884 }
885 }
886 for ( int32_t q = 0; q < 2; q++ )
887 {
888 if(!p_getc(&tempitem.sprite_initiala[q],f))
889 {
890 return 0;
891 }
892
893 }
894 if(!p_igetw(&tempitem.sprite_script,f))
895 {
896 return 0;
897 }
898
899 if ( section_version >= 47 )
900 {
901 if(!p_getc(&tempitem.pickupflag,f))
902 {
903 return 0;
904 }
905 }
906 //read it into an item
907 }
908 }
909 itemsbuf[index] = tempitem;
910 strcpy(item_string[index], istring);
911
912 return 1;
913 }
914
915 int32_t writeoneitem(PACKFILE *f, int32_t i)
916 {
917
918 dword section_version=V_ITEMS;
919 dword section_cversion=CV_ITEMS;
920 int32_t zversion = ZELDA_VERSION;
921 int32_t zbuild = VERSION_BUILD;
922
923
924 //section version info
925 if(!p_iputl(zversion,f))
926 {
927 return 0;
928 }
929 if(!p_iputl(zbuild,f))
930 {
931 return 0;
932 }
933 if(!p_iputw(section_version,f))
934 {
935 new_return(2);
936 }
937
938 if(!p_iputw(section_cversion,f))
939 {
940 new_return(3);
941 }
942
943
944
945 //section data
946
947 if(!pfwrite(item_string[i], 64, f))
948 {
949 new_return(5);
950 }
951
952 if(!p_iputl(itemsbuf[i].tile,f))
953 {
954 new_return(6);
955 }
956
957 if(!p_putc(itemsbuf[i].misc_flags,f))
958 {
959 new_return(7);
960 }
961
962 if(!p_putc(itemsbuf[i].csets,f))
963 {
964 new_return(8);
965 }
966
967 if(!p_putc(itemsbuf[i].frames,f))
968 {
969 new_return(9);
970 }
971
972 if(!p_putc(itemsbuf[i].speed,f))
973 {
974 new_return(10);
975 }
976
977 if(!p_putc(itemsbuf[i].delay,f))
978 {
979 new_return(11);
980 }
981
982 if(!p_iputl(itemsbuf[i].ltm,f))
983 {
984 new_return(12);
985 }
986
987 if(!p_iputl(itemsbuf[i].family,f))
988 {
989 new_return(13);
990 }
991
992 if(!p_putc(itemsbuf[i].fam_type,f))
993 {
994 new_return(14);
995 }
996
997 if(!p_iputl(itemsbuf[i].power,f))
998 {
999 new_return(14);
1000 }
1001
1002 if(!p_iputl(itemsbuf[i].flags,f))
1003 {
1004 new_return(15);
1005 }
1006
1007 if(!p_iputw(itemsbuf[i].script,f))
1008 {
1009 new_return(16);
1010 }
1011
1012 if(!p_putc(itemsbuf[i].count,f))
1013 {
1014 new_return(17);
1015 }
1016
1017 if(!p_iputw(itemsbuf[i].amount,f))
1018 {
1019 new_return(18);
1020 }
1021
1022 if(!p_iputw(itemsbuf[i].collect_script,f))
1023 {
1024 new_return(19);
1025 }
1026
1027 if(!p_iputw(itemsbuf[i].setmax,f))
1028 {
1029 new_return(21);
1030 }
1031
1032 if(!p_iputw(itemsbuf[i].max,f))
1033 {
1034 new_return(22);
1035 }
1036
1037 if(!p_putc(itemsbuf[i].playsound,f))
1038 {
1039 new_return(23);
1040 }
1041
1042 for(int32_t j=0; j<8; j++)
1043 {
1044 if(!p_iputl(itemsbuf[i].initiald[j],f))
1045 {
1046 new_return(24);
1047 }
1048 }
1049
1050 for(int32_t j=0; j<2; j++)
1051 {
1052 if(!p_putc(itemsbuf[i].initiala[j],f))
1053 {
1054 new_return(25);
1055 }
1056 }
1057
1058 if(!p_putc(itemsbuf[i].wpn,f))
1059 {
1060 new_return(26);
1061 }
1062
1063 if(!p_putc(itemsbuf[i].wpn2,f))
1064 {
1065 new_return(27);
1066 }
1067
1068 if(!p_putc(itemsbuf[i].wpn3,f))
1069 {
1070 new_return(28);
1071 }
1072
1073 if(!p_putc(itemsbuf[i].wpn4,f))
1074 {
1075 new_return(29);
1076 }
1077
1078 if(!p_putc(itemsbuf[i].wpn5,f))
1079 {
1080 new_return(30);
1081 }
1082
1083 if(!p_putc(itemsbuf[i].wpn6,f))
1084 {
1085 new_return(31);
1086 }
1087
1088 if(!p_putc(itemsbuf[i].wpn7,f))
1089 {
1090 new_return(32);
1091 }
1092
1093 if(!p_putc(itemsbuf[i].wpn8,f))
1094 {
1095 new_return(33);
1096 }
1097
1098 if(!p_putc(itemsbuf[i].wpn9,f))
1099 {
1100 new_return(34);
1101 }
1102
1103 if(!p_putc(itemsbuf[i].wpn10,f))
1104 {
1105 new_return(35);
1106 }
1107
1108 if(!p_putc(itemsbuf[i].pickup_hearts,f))
1109 {
1110 new_return(36);
1111 }
1112
1113 if(!p_iputl(itemsbuf[i].misc1,f))
1114 {
1115 new_return(37);
1116 }
1117
1118 if(!p_iputl(itemsbuf[i].misc2,f))
1119 {
1120 new_return(38);
1121 }
1122
1123 for(auto q = 0; q < 2; ++q)
1124 {
1125 if(!p_iputw(itemsbuf[i].cost_amount[q],f))
1126 {
1127 new_return(39);
1128 }
1129 }
1130
1131 if(!p_iputl(itemsbuf[i].misc3,f))
1132 {
1133 new_return(40);
1134 }
1135
1136 if(!p_iputl(itemsbuf[i].misc4,f))
1137 {
1138 new_return(41);
1139 }
1140
1141 if(!p_iputl(itemsbuf[i].misc5,f))
1142 {
1143 new_return(42);
1144 }
1145
1146 if(!p_iputl(itemsbuf[i].misc6,f))
1147 {
1148 new_return(43);
1149 }
1150
1151 if(!p_iputl(itemsbuf[i].misc7,f))
1152 {
1153 new_return(44);
1154 }
1155
1156 if(!p_iputl(itemsbuf[i].misc8,f))
1157 {
1158 new_return(45);
1159 }
1160
1161 if(!p_iputl(itemsbuf[i].misc9,f))
1162 {
1163 new_return(46);
1164 }
1165
1166 if(!p_iputl(itemsbuf[i].misc10,f))
1167 {
1168 new_return(47);
1169 }
1170
1171 if(!p_putc(itemsbuf[i].usesound,f))
1172 {
1173 new_return(48);
1174 }
1175
1176 if(!p_putc(itemsbuf[i].usesound2,f))
1177 {
1178 new_return(48);
1179 }
1180
1181 //New itemdata vars -Z
1182 //! version 27
1183
1184 if(!p_putc(itemsbuf[i].useweapon,f))
1185 {
1186 new_return(49);
1187 }
1188 if(!p_putc(itemsbuf[i].usedefence,f))
1189 {
1190 new_return(50);
1191 }
1192 if(!p_iputl(itemsbuf[i].weaprange,f))
1193 {
1194 new_return(51);
1195 }
1196 if(!p_iputl(itemsbuf[i].weapduration,f))
1197 {
1198 new_return(52);
1199 }
1200 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
1201 if(!p_iputl(itemsbuf[i].weap_pattern[q],f))
1202 {
1203 new_return(53);
1204 }
1205 }
1206 //version 28
1207 if(!p_iputl(itemsbuf[i].duplicates,f))
1208 {
1209 new_return(54);
1210 }
1211 for ( int32_t q = 0; q < INITIAL_D; q++ )
1212 {
1213 if(!p_iputl(itemsbuf[i].weap_initiald[q],f))
1214 {
1215 new_return(55);
1216 }
1217 }
1218 for ( int32_t q = 0; q < INITIAL_A; q++ )
1219 {
1220 if(!p_putc(itemsbuf[i].weap_initiala[q],f))
1221 {
1222 new_return(56);
1223 }
1224 }
1225
1226 if(!p_putc(itemsbuf[i].drawlayer,f))
1227 {
1228 new_return(57);
1229 }
1230
1231
1232 if(!p_iputl(itemsbuf[i].hxofs,f))
1233 {
1234 new_return(58);
1235 }
1236 if(!p_iputl(itemsbuf[i].hyofs,f))
1237 {
1238 new_return(59);
1239 }
1240 if(!p_iputl(itemsbuf[i].hxsz,f))
1241 {
1242 new_return(60);
1243 }
1244 if(!p_iputl(itemsbuf[i].hysz,f))
1245 {
1246 new_return(61);
1247 }
1248 if(!p_iputl(itemsbuf[i].hzsz,f))
1249 {
1250 new_return(62);
1251 }
1252 if(!p_iputl(itemsbuf[i].xofs,f))
1253 {
1254 new_return(63);
1255 }
1256 if(!p_iputl(itemsbuf[i].yofs,f))
1257 {
1258 new_return(64);
1259 }
1260 if(!p_iputl(itemsbuf[i].weap_hxofs,f))
1261 {
1262 new_return(65);
1263 }
1264 if(!p_iputl(itemsbuf[i].weap_hyofs,f))
1265 {
1266 new_return(66);
1267 }
1268 if(!p_iputl(itemsbuf[i].weap_hxsz,f))
1269 {
1270 new_return(67);
1271 }
1272 if(!p_iputl(itemsbuf[i].weap_hysz,f))
1273 {
1274 new_return(68);
1275 }
1276 if(!p_iputl(itemsbuf[i].weap_hzsz,f))
1277 {
1278 new_return(69);
1279 }
1280 if(!p_iputl(itemsbuf[i].weap_xofs,f))
1281 {
1282 new_return(70);
1283 }
1284 if(!p_iputl(itemsbuf[i].weap_yofs,f))
1285 {
1286 new_return(71);
1287 }
1288 if(!p_iputw(itemsbuf[i].weaponscript,f))
1289 {
1290 new_return(72);
1291 }
1292 if(!p_iputl(itemsbuf[i].wpnsprite,f))
1293 {
1294 new_return(73);
1295 }
1296
1297 for(auto q = 0; q < 2; ++q)
1298 {
1299 if(!p_iputl(itemsbuf[i].magiccosttimer[q],f))
1300 {
1301 new_return(74);
1302 }
1303 }
1304 if(!p_iputl(itemsbuf[i].overrideFLAGS,f))
1305 {
1306 new_return(75);
1307 }
1308 if(!p_iputl(itemsbuf[i].tilew,f))
1309 {
1310 new_return(76);
1311 }
1312 if(!p_iputl(itemsbuf[i].tileh,f))
1313 {
1314 new_return(77);
1315 }
1316 if(!p_iputl(itemsbuf[i].weapoverrideFLAGS,f))
1317 {
1318 new_return(78);
1319 }
1320 if(!p_iputl(itemsbuf[i].weap_tilew,f))
1321 {
1322 new_return(79);
1323 }
1324 if(!p_iputl(itemsbuf[i].weap_tileh,f))
1325 {
1326 new_return(80);
1327 }
1328 if(!p_iputl(itemsbuf[i].pickup,f))
1329 {
1330 new_return(81);
1331 }
1332 if(!p_iputw(itemsbuf[i].pstring,f))
1333 {
1334 new_return(82);
1335 }
1336 if(!p_iputw(itemsbuf[i].pickup_string_flags,f))
1337 {
1338 new_return(83);
1339 }
1340
1341 for(auto q = 0; q < 2; ++q)
1342 {
1343 if(!p_putc(itemsbuf[i].cost_counter[q],f))
1344 {
1345 new_return(84);
1346 }
1347 }
1348
1349 //InitD[] labels
1350 for ( int32_t q = 0; q < 8; q++ )
1351 {
1352 for ( int32_t w = 0; w < 65; w++ )
1353 {
1354 if(!p_putc(itemsbuf[i].initD_label[q][w],f))
1355 {
1356 new_return(85);
1357 }
1358 }
1359 for ( int32_t w = 0; w < 65; w++ )
1360 {
1361 if(!p_putc(itemsbuf[i].weapon_initD_label[q][w],f))
1362 {
1363 new_return(86);
1364 }
1365 }
1366 for ( int32_t w = 0; w < 65; w++ )
1367 {
1368 if(!p_putc(itemsbuf[i].sprite_initD_label[q][w],f))
1369 {
1370 new_return(87);
1371 }
1372 }
1373 if(!p_iputl(itemsbuf[i].sprite_initiald[q],f))
1374 {
1375 new_return(88);
1376 }
1377 }
1378 for ( int32_t q = 0; q < 2; q++ )
1379 {
1380 if(!p_putc(itemsbuf[i].sprite_initiala[q],f))
1381 {
1382 new_return(89);
1383 }
1384
1385 }
1386 if(!p_iputw(itemsbuf[i].sprite_script,f))
1387 {
1388 new_return(90);
1389 }
1390 if(!p_putc(itemsbuf[i].pickupflag,f))
1391 {
1392 new_return(91);
1393 }
1394 return 1;
1395 }
1396
1397 int32_t onCustomItems()
1398 {
1399 ItemListerDialog().show();
1400 refresh(rMAP+rCOMBOS);
1401 return D_O_K;
1402 }
1403
1404 static DIALOG wpndata_dlg[] =
1405 {
1406 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp)
1407 { jwin_win_proc, 55, 40, 210, 163, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
1408 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
1409 { d_cstile_proc, 198, 84, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
1410 { jwin_button_proc, 90, 176, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
1411 { jwin_button_proc, 170, 176, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
1412 { jwin_check_proc, 198, 109, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Auto-flash", NULL, NULL },
1413 { jwin_check_proc, 198, 120, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "2P Flash", NULL, NULL },
1414 { jwin_check_proc, 198, 131, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "H-Flip", NULL, NULL },
1415 { jwin_check_proc, 198, 142, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "V-Flip", NULL, NULL },
1416 { jwin_text_proc, 61, 88, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Flash CSet:", NULL, NULL },
1417 //10
1418 { jwin_text_proc, 61, 106, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Frames:", NULL, NULL },
1419 { jwin_text_proc, 61, 124, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Speed:", NULL, NULL },
1420 { jwin_text_proc, 61, 142, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Miscellaneous Type:", NULL, NULL },
1421 { jwin_edit_proc, 160, 88, 35, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
1422 { jwin_edit_proc, 160, 106, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1423 { jwin_edit_proc, 160, 124, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1424 { jwin_edit_proc, 160, 142, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1425 { jwin_check_proc, 198, 153, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Behind", NULL, NULL },
1426 { jwin_edit_proc, 92, 65, 155, 16, vc(12), vc(1), 0, 0, 64, 0, NULL, NULL, NULL },
1427 { jwin_text_proc, 61, 69, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
1428 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
1429 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
1430 };
1431
1432
1433
1434 void edit_weapondata(int32_t index)
1435 {
1436 call_sprite_dlg(index); return;
1437 //OLD CODE
1438 /*
1439 char frm[8], spd[8], fcs[8], typ[8];
1440 char name[64];
1441 char wpnnumstr[75];
1442
1443 sprintf(wpnnumstr, "Sprite %d: %s", index, weapon_string[index]);
1444 wpndata_dlg[0].dp = wpnnumstr;
1445 wpndata_dlg[0].dp2 = get_zc_font(font_lfont);
1446 wpndata_dlg[2].d1 = wpnsbuf[index].tile;
1447 wpndata_dlg[2].d2 = wpnsbuf[index].csets&15;
1448
1449 for(int32_t i=0; i<4; i++)
1450 wpndata_dlg[i+5].flags = (wpnsbuf[index].misc&(1<<i)) ? D_SELECTED : 0;
1451
1452 wpndata_dlg[17].flags = (wpnsbuf[index].misc & WF_BEHIND) ? D_SELECTED : 0;
1453
1454 sprintf(fcs,"%d",wpnsbuf[index].csets>>4);
1455 sprintf(frm,"%d",wpnsbuf[index].frames);
1456 sprintf(spd,"%d",wpnsbuf[index].speed);
1457 sprintf(typ,"%d",wpnsbuf[index].type);
1458 wpndata_dlg[13].dp = fcs;
1459 wpndata_dlg[14].dp = frm;
1460 wpndata_dlg[15].dp = spd;
1461 wpndata_dlg[16].dp = typ;
1462 sprintf(name,"%s",weapon_string[index]);
1463 wpndata_dlg[18].dp = name;
1464
1465 large_dialog(wpndata_dlg);
1466
1467 int32_t ret;
1468 wpndata test;
1469
1470 do
1471 {
1472 ret = do_zqdialog(wpndata_dlg,3);
1473
1474 test.tile = wpndata_dlg[2].d1;
1475 test.csets = wpndata_dlg[2].d2;
1476
1477 test.misc = 0;
1478
1479 for(int32_t i=0; i<4; i++)
1480 if(wpndata_dlg[i+5].flags & D_SELECTED)
1481 test.misc |= 1<<i;
1482
1483 test.misc |= (wpndata_dlg[17].flags & D_SELECTED) ? WF_BEHIND : 0;
1484
1485 test.csets |= (atoi(fcs)&15)<<4;
1486 test.frames = atoi(frm);
1487 test.speed = atoi(spd);
1488 test.type = atoi(typ);
1489 test.script = 0; // Not used yet
1490 }
1491 while(ret==17);
1492
1493 if(ret==3)
1494 {
1495 strcpy(weapon_string[index],name);
1496 wpnsbuf[index] = test;
1497 saved = false;
1498 }*/
1499
1500 }
1501
1502 int32_t onCustomWpns()
1503 {
1504 /*
1505 char *hold = item_string[0];
1506 item_string[0] = "rupee (1)";
1507 */
1508
1509 build_biw_list();
1510
1511 int32_t index = select_weapon("Select Weapon",biw[0].i);
1512
1513 while(index >= 0)
1514 {
1515 edit_weapondata(index);
1516 index = select_weapon("Select Weapon",index);
1517 }
1518
1519 refresh(rMAP+rCOMBOS);
1520 return D_O_K;
1521 }
1522
1523 int32_t onMiscSprites()
1524 {
1525 MiscSprsDialog(QMisc.sprites, 20, [](int32_t* newsprs)
1526 {
1527 saved = false;
1528 for(auto q = 0; q < sprMAX; ++q)
1529 QMisc.sprites[q] = byte(newsprs[q]);
1530 }).show();
1531 return D_O_K;
1532 }
1533
1534 int32_t onMiscSFX()
1535 {
1536 MiscSFXDialog(QMisc.miscsfx, 20, [](int32_t* newsfx)
1537 {
1538 saved = false;
1539 for(auto q = 0; q < sfxMAX; ++q)
1540 QMisc.miscsfx[q] = byte(newsfx[q]);
1541 }).show();
1542 return D_O_K;
1543 }
1544
1545 static int32_t enedata_data_list[] =
1546 {
1547 //2,3,4 --moved to EOL as 247,248,249, to make room for tabs. -Z
1548 247,248,249,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
1549 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,138,139,140,141,143,-1
1550 };
1551
1552 static int32_t enedata_data2_list[] =
1553 {
1554 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,179,180,181,182,183,184,187,188,189,190, 288, 289, 296, 297,-1
1555 };
1556
1557 static int32_t enedata_data3_list[] =
1558 {
1559 // d_dummy_proc entries still must be somewhere on the editor.
1560 // They will be hidden, but if ther are not referenced, this causes objects
1561 // to refuse to click!
1562 // This was the cause of flags not clicking properly and Enemy Editor UI elements not responding to mouse input. -Z
1563 5,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,
1564 286,287,290,291,292,293,294,295,298,299,300,301,302,303,304,305,306,307,310,311,312,313,314,315,
1565 -1
1566 };
1567
1568 static int32_t enedata_data4_list[] =
1569 {
1570 308, 309, 316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,
1571 -1
1572 };
1573
1574 static int32_t enedata_flags_list[] =
1575 {
1576 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,98,99,100,101,102,103,104,105,106,120,121,400,-1
1577 };
1578
1579 static int32_t enedata_flags2_list[] =
1580 {
1581 90,91,92,93,94,95,96,97,401,402,403,404,405,406,407,408,409,410,411,412,413,414,-1
1582 };
1583
1584 static int32_t enedata_editorflags_list[]=
1585 {
1586 254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,
1587 -1
1588 };
1589
1590 static int32_t enedata_flags3_list[] =
1591 {
1592 107,108,109,110,111,112,113,114,115,116,117,118,119,185,186,399,-1
1593 }; //REMEMBER: If you undummy anything from 400-414, make sure to remove it from enedata_flags2_list! That list gets everything in it disabled.
1594
1595 static int32_t enedata_defense_list[] =
1596 {
1597 144,145,146,147,148,149,150,151,152,161,162,163,164,165,166,167,168,169,178,-1
1598 };
1599
1600 static int32_t enedata_defense2_list[] =
1601 {
1602 153,154,155,156,157,158,159,160,170,171,172,173,174,175,176,177,191,192,415,416,-1
1603 };
1604
1605 static int32_t enedata_defense3_list[] =
1606 {
1607 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1608 };
1609
1610 static int32_t enedata_spritesize_list[] =
1611 {
1612 213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,239,240,241,242,243,244,245,246,-1
1613 };
1614
1615 static int32_t enemy_defence_tabs_list[] =
1616 {
1617 2,-1
1618 };
1619
1620 static int32_t enemy_basic_tabs_list[] =
1621 {
1622 3,-1
1623 };
1624
1625 static int32_t enemy_flags_tabs_list[] =
1626 {
1627 4,-1
1628 };
1629
1630
1631 static int32_t enemy_attributes_tabs_list[] =
1632 {
1633 5,-1
1634 };
1635
1636 static int32_t enemy_graphics_tabs_list[] =
1637 {
1638 6,-1
1639 };
1640
1641 static int32_t enemy_movement_tabs_list[] =
1642 {
1643 250,-1
1644 };
1645
1646 static int32_t enemy_script_tabs_list[] =
1647 {
1648 251,-1
1649 };
1650
1651
1652 static int32_t enemy_scripts_list[] =
1653 {
1654
1655 334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,
1656 377,378,379,380,381,382,383,384,
1657 426,427,428,429,430,431,432,433,
1658 -1
1659 };
1660
1661 static int32_t enemy_weapon_scripts_list[] =
1662 {
1663 353,354,355,356,357,358,359,360,
1664 361,362,363,364,365,366,367,368,
1665 369,370,
1666 385,386,387,388,389,390,391,392,
1667 434,435,436,437,438,439,440,441,
1668 -1
1669 };
1670 static int32_t enemy_moveflag_list[] =
1671 {
1672 371, 372, 373, 374, 375, 417, 418, 419,
1673 420, 421, 422, 423, 424, 425,
1674 -1
1675 };
1676 static int32_t enemy_movement_list[] =
1677 {
1678 -1
1679 };
1680
1681 static int32_t enemy_gfx_sprites_list[] =
1682 {
1683 235,236,393,394,395,396,397,398,
1684 -1
1685 };
1686
1687
1688 static TABPANEL enemy_graphics_tabs[] =
1689 {
1690 { (char *)"Sprites", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1691 { NULL, 0, NULL, 0, NULL }
1692 };
1693
1694
1695
1696 /*
1697
1698
1699
1700 static int32_t enemy_sounds_tabs_list[] =
1701 {
1702 250,-1
1703 };
1704
1705
1706 static int32_t enemy_attacks_tabs_list[] =
1707 {
1708 5,-1
1709 };
1710
1711 static int32_t enemy_sfx_sounds_list[] =
1712 {
1713 -1
1714 };
1715
1716 static int32_t enemy_sfx_bgsounds_list[] =
1717 {
1718 -1
1719 };
1720
1721 static int32_t enemy_attacks_list[] =
1722 {
1723 -1
1724 };
1725 static int32_t enemy_attacks_Wmove_list[] =
1726 {
1727 -1
1728 };
1729
1730
1731
1732 */
1733
1734
1735
1736
1737
1738 /*
1739
1740 static TABPANEL enemy_sounds_tabs[] =
1741 {
1742 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1743 // { (char *)"Background Sounds", D_SELECTED, enemy_sfx_bgsounds_list, 0, NULL },
1744 { NULL, 0, NULL, 0, NULL }
1745 };
1746
1747
1748
1749 static TABPANEL enemy_attacks_tabs[] =
1750 {
1751 // { (char *)"Attacks", D_SELECTED, enemy_attacks_list, 0, NULL },
1752 // { (char *)"Weapon Movement", D_SELECTED, enemy_attacks_Wmove_list, 0, NULL },
1753 { NULL, 0, NULL, 0, NULL }
1754 };
1755
1756
1757 */
1758
1759
1760 static int32_t enedata_defense_ranged_list[] =
1761 {
1762 //ranged 1
1763 //brang, arrow, magic, fire, byrna, whistle
1764 144, 161, 147, 164, 150, 167, 148, 165, 160, 177, 191, 192,
1765 -1
1766 };
1767
1768
1769 //193 == text; 203 == lister
1770 static int32_t enedata_defense_script_list[] =
1771 {
1772 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1773 };
1774
1775 static int32_t enedata_defense_melee_list[] =
1776 {
1777 //melee
1778 //sword, bomb, sbomb, wand,
1779 153, 170, 145, 162, 146, 163, 149, 166,
1780 //hammer, boots, hookshot
1781 152, 169, 159, 176, 151, 168,
1782 //set all
1783 178,
1784 };
1785
1786 static int32_t enedata_defense_reflected_list[] =
1787 {
1788 //reflected
1789 //ref beam, ref magic, ref fireball, refl rock,
1790 155, 172, 156, 173, 157, 174, 158, 175,
1791 -1
1792 };
1793
1794 static TABPANEL enemy_movement_tabs[] =
1795 {
1796 { (char *)"Move Flags", D_SELECTED, enemy_moveflag_list, 0, NULL },
1797 { (char *)"Enemy Movement", 0, enemy_movement_list, 0, NULL },
1798 { NULL, 0, NULL, 0, NULL }
1799 };
1800
1801 static TABPANEL enemy_script_tabs[] =
1802 {
1803 { (char *)"Action Script", D_SELECTED, enemy_scripts_list, 0, NULL },
1804 { (char *)"Weapon Script", 0, enemy_weapon_scripts_list, 0, NULL },
1805 { NULL, 0, NULL, 0, NULL }
1806 };
1807
1808 static TABPANEL enemy_defence_tabs[] =
1809 {
1810
1811 { (char *)"Defs 1", D_SELECTED, enedata_defense_list, 0, NULL },
1812 { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1813 { (char *)"Script", 0, enedata_defense3_list, 0, NULL },
1814
1815 /*
1816 { (char *)"Melee", D_SELECTED, enedata_defense_melee_list, 0, NULL },
1817 { (char *)"Ranged", 0, enedata_defense_ranged_list, 0, NULL },
1818 { (char *)"Reflected", 0, enedata_defense_reflected_list, 0, NULL },
1819 { (char *)"Script", 0, enedata_defense_script_list, 0, NULL },
1820 */
1821 { NULL, 0, NULL, 0, NULL }
1822 };
1823
1824 static TABPANEL enemy_flags_tabs[] =
1825 {
1826 { (char *)"Basic Flags", D_SELECTED, enedata_flags_list, 0, NULL },
1827 { (char *)"Behaviour", 0, enedata_editorflags_list, 0, NULL },
1828 { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1829 { NULL, 0, NULL, 0, NULL }
1830 };
1831
1832 static TABPANEL enemy_basic_tabs[] =
1833 {
1834 { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1835 { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1836 { (char *)"Data 3", 0, enedata_data3_list, 0, NULL },
1837 { (char *)"Data 4", 0, enedata_data4_list, 0, NULL },
1838 { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1839 // { (char *)"Graphics", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1840 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1841 { NULL, 0, NULL, 0, NULL }
1842 };
1843
1844 static TABPANEL enedata_tabs[] =
1845 {
1846 // { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1847 // { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1848 { (char *)"Basic", D_SELECTED, enemy_basic_tabs_list, 0, NULL },
1849 // { (char *)"Misc. Flags", 0, enedata_flags_list, 0, NULL },
1850 // { (char *)"Flags 2", 0, enedata_flags2_list, 0, NULL },
1851 { (char *)"Defenses", 0, enemy_defence_tabs_list, 0, NULL },
1852 // { (char *)"Defs 1", 0, enedata_defense_list, 0, NULL },
1853 // { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1854 // { (char *)"Defs 3", 0, enedata_defense3_list, 0, NULL },
1855 { (char *)"Flags", 0, enemy_flags_tabs_list, 0, NULL },
1856 // { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1857 // { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1858 //Unimplemented at present. -Z
1859 { (char *)"Movement", 0, enemy_movement_tabs_list, 0, NULL },
1860 // { (char *)"Attacks", 0, enemy_attacks_tabs_list, 0, NULL },
1861 // { (char *)"Sound Effects", 0, enemy_sounds_tabs_list, 0, NULL },
1862 { (char *)"Graphics", 0, enemy_graphics_tabs_list, 0, NULL },
1863 { (char *)"Scripts", 0, enemy_script_tabs_list, 0, NULL },
1864 { NULL, 0, NULL, 0, NULL }
1865 };
1866
1867
1868 list_data_struct bief[eeMAX];
1869 int32_t bief_cnt=-1;
1870
1871 void build_bief_list()
1872 {
1873 int32_t start=bief_cnt=0;
1874
1875 for(int32_t i=start; i<eeMAX; i++)
1876 {
1877 //Load enemy names from the module
1878 //if(moduledata.enem_type_names[i][0]!='-')
1879 if (moduledata.enem_type_names[i][0]!=0)
1880 {
1881 if(moduledata.enem_type_names[i][0]!='-')
1882 {
1883 //load these from the module
1884 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1885 //bief[bief_cnt].s = (char *)enetype_string[i];
1886 bief[bief_cnt].s = (char *)moduledata.enem_type_names[i];
1887 bief[bief_cnt].i = i;
1888 ++bief_cnt;
1889 }
1890 }
1891 else //not set in the module file, so use the default
1892 {
1893 if(enetype_string[i][0]!='-')
1894 {
1895 //load these from the module
1896 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1897 //bief[bief_cnt].s = (char *)enetype_string[i];
1898 bief[bief_cnt].s = (char *)enetype_string[i];
1899 bief[bief_cnt].i = i;
1900 ++bief_cnt;
1901 }
1902
1903 }
1904
1905 }
1906
1907 // No alphabetic sorting for this list
1908 for(int32_t j=start+1; j<bief_cnt-1; j++)
1909 {
1910 if(!strcmp(bief[j].s,"(None)"))
1911 {
1912 for(int32_t i=j; i>0; i--)
1913 zc_swap(bief[i],bief[i-1]);
1914
1915 break;
1916 }
1917 }
1918 }
1919
1920 const char *enetypelist(int32_t index, int32_t *list_size)
1921 {
1922 if(index<0)
1923 {
1924 *list_size = bief_cnt;
1925 return NULL;
1926 }
1927
1928 return bief[index].s;
1929 }
1930
1931 list_data_struct biea[aMAX];
1932 int32_t biea_cnt=-1;
1933
1934 void build_biea_list()
1935 {
1936 int32_t start=biea_cnt=0;
1937
1938 for(int32_t i=start; i<aMAX; i++)
1939 {
1940
1941 if ( moduledata.enem_anim_type_names[1][0] != 0 )
1942 {
1943 if(eneanim_string[i][0]!='-')
1944 {
1945 biea[biea_cnt].s = (char *)moduledata.enem_anim_type_names[i];
1946 biea[biea_cnt].i = i;
1947 ++biea_cnt;
1948 }
1949 }
1950 else
1951 {
1952 if(eneanim_string[i][0]!='-')
1953 {
1954 biea[biea_cnt].s = (char *)eneanim_string[i];
1955 biea[biea_cnt].i = i;
1956 ++biea_cnt;
1957 }
1958 }
1959 }
1960
1961 for(int32_t i=start; i<biea_cnt-1; i++)
1962 for(int32_t j=i+1; j<biea_cnt; j++)
1963 if(stricmp(biea[i].s,biea[j].s)>0 && strcmp(biea[j].s,""))
1964 zc_swap(biea[i],biea[j]);
1965 }
1966
1967
1968 const char *eneanimlist(int32_t index, int32_t *list_size)
1969 {
1970 if(index<0)
1971 {
1972 *list_size = biea_cnt;
1973 return NULL;
1974 }
1975
1976 return biea[index].s;
1977 }
1978
1979 const char *itemsetlist(int32_t index, int32_t *list_size)
1980 {
1981 if(index>=0)
1982 {
1983 bound(index,0,count_item_drop_sets()-1);
1984 return item_drop_sets[index].name;
1985 // return itemset_string[index];
1986 }
1987
1988 *list_size=count_item_drop_sets();
1989 return NULL;
1990 }
1991
1992 list_data_struct biew[MAXWPNS];
1993 int32_t biew_cnt=-1;
1994
1995 char temp_custom_ew_strings[10][40];
1996
1997 static int32_t enemy_weapon_types[]=
1998 {
1999 128, ewFireball,ewArrow,ewBrang,ewSword,
2000 ewRock,ewMagic,ewBomb,ewSBomb,
2001 //137
2002 ewLitBomb,ewLitSBomb,ewFireTrail,ewFlame,
2003 ewWind,ewFlame2,ewFlame2Trail,
2004 //145
2005 ewIce,ewFireball2
2006
2007 };
2008
2009 static int32_t enemy_script_weapon_types[]=
2010 {
2011 wScript1, wScript2, wScript3, wScript4,
2012 //35
2013 wScript5, wScript6, wScript7, wScript8,
2014 //39
2015 wScript9, wScript10
2016
2017 };
2018
2019 void build_biew_list()
2020 {
2021 biew_cnt=0;
2022
2023 memset(temp_custom_ew_strings, 0, sizeof(temp_custom_ew_strings));
2024
2025 for(int32_t i=0; i<wMax-wEnemyWeapons; i++)
2026 {
2027 //if(eweapon_string[i][0]!='-')
2028 if(moduledata.enemy_weapon_names[i][0]!='-')
2029 {
2030 //biew[biew_cnt].s = (char *)eweapon_string[i];
2031 biew[biew_cnt].s = (char *)moduledata.enemy_weapon_names[i];
2032 biew[biew_cnt].i = enemy_weapon_types[i];
2033 ++biew_cnt;
2034 }
2035 }
2036 for(int32_t i = 0; i < 10; i++)
2037 {
2038 biew[biew_cnt].s = (char *)moduledata.enemy_scriptweaponweapon_names[i];
2039 biew[biew_cnt].i = enemy_script_weapon_types[i];
2040 ++biew_cnt;
2041 }
2042 al_trace("biew_cnt is: %d\n", biew_cnt);
2043 for ( int32_t i = 0; i < biew_cnt; i++ )
2044 {
2045 al_trace("biew[%d] id is (%d) and string is (%s)\n", i, biew[i].i, biew[i].s);
2046
2047 }
2048
2049 }
2050
2051 const char *eweaponlist(int32_t index, int32_t *list_size)
2052 {
2053 if(biew_cnt==-1)
2054 build_biew_list();
2055
2056 if(index>=0)
2057 {
2058 bound(index,0,biew_cnt-1);
2059 return biew[index].s;
2060 }
2061
2062 *list_size=biew_cnt;
2063 return NULL;
2064 }
2065
2066
2067 //
2068 // Enemy Misc. Attribute label swapping device
2069 //
2070 struct EnemyNameInfo
2071 {
2072 int32_t family;
2073 char const* misc[10];
2074 void* list[32];
2075 char *flags[16];
2076 char *attributes[32];
2077
2078 };
2079
2080 const char *walkmisc1list(int32_t index, int32_t *list_size)
2081 {
2082 if(index>=0)
2083 {
2084 bound(index,0,e1tLAST-1);
2085 return walkmisc1_string[index];
2086 }
2087
2088 *list_size = e1tLAST;
2089 return NULL;
2090 }
2091
2092 const char *walkmisc2list(int32_t index, int32_t *list_size)
2093 {
2094 if(index>=0)
2095 {
2096 bound(index,0,e2tTRIBBLE);
2097 return walkmisc2_string[index];
2098 }
2099
2100 *list_size = e2tTRIBBLE+1;
2101 return NULL;
2102 }
2103
2104 const char *walkmisc7list(int32_t index, int32_t *list_size)
2105 {
2106 if(index>=0)
2107 {
2108 bound(index,0,e7tEATHURT);
2109 return walkmisc7_string[index];
2110 }
2111
2112 *list_size = e7tEATHURT+1;
2113 return NULL;
2114 }
2115
2116 const char *walkmisc9list(int32_t index, int32_t *list_size)
2117 {
2118 if(index>=0)
2119 {
2120 bound(index,0,e9tARMOS);
2121 //return walkmisc9_string[index];
2122 return (char *)moduledata.walkmisc9_names[index];
2123 }
2124
2125 *list_size = e9tARMOS+1;
2126 return NULL;
2127 }
2128
2129 const char *gleeokmisc3list(int32_t index, int32_t *list_size)
2130 {
2131 if(index>=0)
2132 {
2133 return (index ? "Breath" : "1 Shot");
2134 }
2135
2136 *list_size = 2;
2137 return NULL;
2138 }
2139
2140 const char *gohmamisc1list(int32_t index, int32_t *list_size)
2141 {
2142 if(index>=0)
2143 {
2144 return (index==2 ? "Breath" : index==1 ? "3 Shots" : "1 Shot");
2145 }
2146
2147 *list_size = 3;
2148 return NULL;
2149 }
2150
2151 const char *manhandlamisc2list(int32_t index, int32_t *list_size)
2152 {
2153 if(index>=0)
2154 {
2155 return (index ? "2x2 (8 Heads)" : "1x1 (4 Heads)");
2156 }
2157
2158 *list_size = 2;
2159 return NULL;
2160 }
2161
2162 const char *aquamisc1list(int32_t index, int32_t *list_size)
2163 {
2164 if(index>=0)
2165 {
2166 return (index ? "Left (Facing Right)" : "Right (Facing Left)");
2167 }
2168
2169 *list_size = 2;
2170 return NULL;
2171 }
2172
2173 const char *patramisc4list(int32_t index, int32_t *list_size)
2174 {
2175 if(index>=0)
2176 {
2177 return (index ? "Oval" : "Big Circle");
2178 }
2179
2180 *list_size = 2;
2181 return NULL;
2182 }
2183
2184 const char *patramisc5list(int32_t index, int32_t *list_size)
2185 {
2186 if(index>=0)
2187 {
2188 return (index==3 ? "Inner + Center" : index==2 ? "Inner Eyes" : index==1 ? "Center Eye" : "None");
2189 }
2190
2191 *list_size = 4;
2192 return NULL;
2193 }
2194
2195 const char *patramisc10list(int32_t index, int32_t *list_size)
2196 {
2197 if(index>=0)
2198 {
2199 return (index ? "2x2 Patra" : "1x1 Patra");
2200 }
2201
2202 *list_size = 2;
2203 return NULL;
2204 }
2205
2206 const char *patramisc20list(int32_t index, int32_t *list_size)
2207 {
2208 if(index>=0)
2209 {
2210 switch(index)
2211 {
2212 case 4:
2213 return "Stream";
2214 case 3:
2215 return "Ring";
2216 case 2:
2217 return "Barrage";
2218 case 1:
2219 return "Random (Single)";
2220 default:
2221 return "Random (Any)";
2222 }
2223 }
2224
2225 *list_size = 5;
2226 return NULL;
2227 }
2228
2229 const char *patramisc22list(int32_t index, int32_t *list_size)
2230 {
2231 if(index>=0)
2232 {
2233 switch(index)
2234 {
2235 case 2:
2236 return "Expand + Warning";
2237 case 1:
2238 return "When Expanding";
2239 default:
2240 return "Never";
2241 }
2242 }
2243
2244 *list_size = 3;
2245 return NULL;
2246 }
2247
2248 const char *patramisc25list(int32_t index, int32_t *list_size)
2249 {
2250 if(index>=0)
2251 {
2252 switch(index)
2253 {
2254 case 3:
2255 return "When behind 1 layer";
2256 case 2:
2257 return "When Invulnerable";
2258 case 1:
2259 return "When Vulnerable";
2260 default:
2261 return "Always";
2262 }
2263 }
2264
2265 *list_size = 4;
2266 return NULL;
2267 }
2268
2269 const char *patramisc26list(int32_t index, int32_t *list_size)
2270 {
2271 if(index>=0)
2272 {
2273 switch(index)
2274 {
2275 case 2:
2276 return "Without Outer Ring";
2277 case 1:
2278 return "With Outer Ring";
2279 default:
2280 return "Always";
2281 }
2282 }
2283
2284 *list_size = 3;
2285 return NULL;
2286 }
2287
2288 const char *patramisc28list(int32_t index, int32_t *list_size)
2289 {
2290 if(index>=0)
2291 {
2292 bound(index,0,patratLAST-1);
2293 return patramisc28_string[index];
2294 }
2295
2296 *list_size = patratLAST;
2297 return NULL;
2298 }
2299
2300 const char *dodongomisc10list(int32_t index, int32_t *list_size)
2301 {
2302 if(index>=0)
2303 {
2304 return (index ? "BS-Zelda" : "NES");
2305 }
2306
2307 *list_size = 2;
2308 return NULL;
2309 }
2310
2311 const char *digdoggermisc10list(int32_t index, int32_t *list_size)
2312 {
2313 if(index>=0)
2314 {
2315 return (index ? "Kid" : "Digdogger");
2316 }
2317
2318 *list_size = 2;
2319 return NULL;
2320 }
2321
2322 const char *walkerspawnlist(int32_t index, int32_t *list_size)
2323 {
2324 if(index>=0)
2325 {
2326 return (index==2 ? "Instant" : index==1 ? "Flicker" : "Puff");
2327 }
2328
2329 *list_size = 3;
2330 return NULL;
2331 }
2332
2333 const char *wizzrobemisc1list(int32_t index, int32_t *list_size)
2334 {
2335 if(index>=0)
2336 {
2337 return (index ? "Phase" : "Teleport");
2338 }
2339
2340 *list_size = 2;
2341 return NULL;
2342 }
2343
2344 const char *wizzrobemisc2list(int32_t index, int32_t *list_size)
2345 {
2346 if(index>=0)
2347 {
2348 return (index==3 ? "Summon (Layer)" : index==2 ? "Summon" : index==1 ? "8 Shots" : "1 Shot");
2349 }
2350
2351 *list_size = 4;
2352 return NULL;
2353 }
2354
2355 const char *keesemisc1list(int32_t index, int32_t *list_size)
2356 {
2357 if(index>=0)
2358 {
2359 return (index > 1 ? "Keese (Fast)" : index > 0 ? "Bat" : "Keese");
2360 }
2361
2362 *list_size = 3;
2363 return NULL;
2364 }
2365
2366 const char *keesemisc2list(int32_t index, int32_t *list_size)
2367 {
2368 if(index>=0)
2369 {
2370 return (index ? "Tribble" : "Normal");
2371 }
2372
2373 *list_size = 2;
2374 return NULL;
2375 }
2376
2377 const char *trapmisc2list(int32_t index, int32_t *list_size)
2378 {
2379 if(index>=0)
2380 {
2381 return (index ? "Constant" : "Line Of Sight");
2382 }
2383
2384 *list_size = 2;
2385 return NULL;
2386 }
2387
2388 const char *trapmisc1list(int32_t index, int32_t *list_size)
2389 {
2390 if(index>=0)
2391 {
2392 return (index==2 ? "Vertical" : index==1 ? "Horizontal" : "4-Way");
2393 }
2394
2395 *list_size = 3;
2396 return NULL;
2397 }
2398
2399 const char *leevermisc1list(int32_t index, int32_t *list_size)
2400 {
2401 if(index>=0)
2402 {
2403 if(index==0)
2404 return "Player's path";
2405 else if(index==1)
2406 return "In place";
2407 else if(index==2)
2408 return "Player's path + second";
2409 }
2410
2411 *list_size = 3;
2412 return NULL;
2413 }
2414
2415 const char *rockmisc1list(int32_t index, int32_t *list_size)
2416 {
2417 if(index>=0)
2418 {
2419 return (index ? "2x2" : "1x1");
2420 }
2421
2422 *list_size = 2;
2423 return NULL;
2424 }
2425
2426 // 0: no, 1: yes
2427 const char *yesnomisclist(int32_t index, int32_t *list_size)
2428 {
2429 if(index>=0)
2430 {
2431 return (index ? "Yes" : "No");
2432 }
2433
2434 *list_size = 2;
2435 return NULL;
2436 }
2437
2438 // 0: yes, 1: no
2439 const char *noyesmisclist(int32_t index, int32_t *list_size)
2440 {
2441 if(index>=0)
2442 {
2443 return (index ? "No" : "Yes");
2444 }
2445
2446 *list_size = 2;
2447 return NULL;
2448 }
2449
2450 9 static ListData walkmisc1_list(walkmisc1list, &a4fonts[font_lfont_l]);
2451 9 static ListData walkmisc2_list(walkmisc2list, &a4fonts[font_lfont_l]);
2452 9 static ListData walkmisc7_list(walkmisc7list, &a4fonts[font_lfont_l]);
2453 9 static ListData walkmisc9_list(walkmisc9list, &a4fonts[font_lfont_l]);
2454
2455 9 static ListData gleeokmisc3_list(gleeokmisc3list, &a4fonts[font_lfont_l]);
2456 9 static ListData gohmamisc1_list(gohmamisc1list, &a4fonts[font_lfont_l]);
2457 9 static ListData manhandlamisc2_list(manhandlamisc2list, &a4fonts[font_lfont_l]);
2458 9 static ListData aquamisc1_list(aquamisc1list, &a4fonts[font_lfont_l]);
2459
2460 9 static ListData patramisc4_list(patramisc4list, &a4fonts[font_lfont_l]);
2461 9 static ListData patramisc5_list(patramisc5list, &a4fonts[font_lfont_l]);
2462 9 static ListData patramisc10_list(patramisc10list, &a4fonts[font_lfont_l]);
2463 9 static ListData patramisc20_list(patramisc20list, &a4fonts[font_lfont_l]);
2464 9 static ListData patramisc22_list(patramisc22list, &a4fonts[font_lfont_l]);
2465 9 static ListData patramisc25_list(patramisc25list, &a4fonts[font_lfont_l]);
2466 9 static ListData patramisc26_list(patramisc26list, &a4fonts[font_lfont_l]);
2467 9 static ListData patramisc28_list(patramisc28list, &a4fonts[font_lfont_l]);
2468
2469 9 static ListData dodongomisc10_list(dodongomisc10list, &a4fonts[font_lfont_l]);
2470
2471 9 static ListData keesemisc1_list(keesemisc1list, &a4fonts[font_lfont_l]);
2472 9 static ListData keesemisc2_list(keesemisc2list, &a4fonts[font_lfont_l]);
2473
2474 9 static ListData digdoggermisc10_list(digdoggermisc10list, &a4fonts[font_lfont_l]);
2475
2476 9 static ListData wizzrobemisc1_list(wizzrobemisc1list, &a4fonts[font_lfont_l]);
2477 9 static ListData wizzrobemisc2_list(wizzrobemisc2list, &a4fonts[font_lfont_l]);
2478
2479 9 static ListData trapmisc1_list(trapmisc1list, &a4fonts[font_lfont_l]);
2480 9 static ListData trapmisc2_list(trapmisc2list, &a4fonts[font_lfont_l]);
2481
2482 9 static ListData leevermisc1_list(leevermisc1list, &a4fonts[font_lfont_l]);
2483 9 static ListData rockmisc1_list(rockmisc1list, &a4fonts[font_lfont_l]);
2484
2485 9 static ListData yesnomisc_list(yesnomisclist, &a4fonts[font_lfont_l]);
2486 9 static ListData noyesmisc_list(noyesmisclist, &a4fonts[font_lfont_l]);
2487
2488 static EnemyNameInfo enameinf[]=
2489 {
2490 {
2491 //"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility"
2492 eeWALK, { "Shot Type:", "Death Type:", "Death Attr. 1:", "Death Attr. 2:", "Death Attr. 3:", "Extra Shots:", "Touch Effects:", "Effect Strength:", "Walk Style:", "Walk Attr.:" },
2493 { (void*)&walkmisc1_list, (void*)&walkmisc2_list, NULL, NULL, NULL, NULL, (void*)&walkmisc7_list, NULL, (void*)&walkmisc9_list, NULL, //10
2494 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2496 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",
2497 (char *)"Draw Invisible as Cloaked",(char *)"Split in Place",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",
2498 (char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2499 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2500 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2501 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2502 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2503 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2504 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2505 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2506 }
2507 },
2508 {
2509 eeGLEEOK, { "Heads:", "Head HP:", "Shot Type:", NULL, "Neck Segments:", "Neck Offset 1:", "Neck Offset 2:", "Head Offset:", "Fly Head Offset:", NULL },
2510 { NULL, NULL, (void*)&gleeokmisc3_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2512 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2513 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Center Spawn X Point",(char *)"Heads Block Projectiles",
2514 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2515 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2516 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2517 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2518 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2519 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2520 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2521 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2522 }
2523 },
2524 {
2525 eeDIG, { "Enemy 1 ID:", "Enemy 2 ID:", "Enemy 3 ID:", "Enemy 4 ID:", "Enemy 1 Qty:", "Enemy 2 Qty:", "Enemy 3 Qty:", "Enemy 4 Qty:", "Unused:", "Type:" },
2526 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&digdoggermisc10_list, //10
2527 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2528 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2529 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2530 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2531 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2532 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2533 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2534 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2535 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2536 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2537 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2538 }
2539 },
2540 {
2541 eePATRA, { "Outer Eyes:", "Inner Eyes:", "Eyes' HP:", "Eye Movement:", "Shooters:", "Pattern Odds:", "Pattern Cycles:", "Eye Offset:", "Eye CSet:", "Type:" },
2542 { NULL, NULL, NULL, (void*)&patramisc4_list, (void*)&patramisc5_list, NULL, NULL, NULL, NULL, (void*)&patramisc10_list, //10
2543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&patramisc20_list, NULL, //21
2544 (void*)&patramisc22_list, NULL, NULL, (void*)&patramisc25_list, (void*)&patramisc26_list, NULL, (void*)&patramisc28_list, NULL, NULL, NULL, NULL}, //32
2545 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Has Firing Animation",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Slow down when Firing",(char *)"Don't attack when expanding",
2546 (char *)"Don't expand when spawned",(char *)"Pattern Odds reset when Expanding",(char *)"Don't 'expand' without orbiters",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2547 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2548 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2549 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2550 (char *)"Transformation Inv Time:",(char *)"Shot chance (1/N per frame):",(char *)"Firing cooldown:",(char *)"Inner Eyes Firing Pattern:",
2551 (char *)"Warning Spins:",(char *)"Stays still:",(char *)"Outer Ring Loss Speed Boost:",(char *)"Inner Ring Loss Speed Boost:",
2552 (char *)"Can Fire:",(char *)"Can Expand:",(char *)"Inner Eye HP:",(char *)"Center Eye Firing Pattern:",
2553 (char *)"Outer Eye Radius:",(char *)"Inner Eye Radius:",(char *)"Outer Eye Expand Radius:",(char *)"Inner Eye Expand Radius:",
2554 }
2555 },
2556 {
2557 eePROJECTILE, { "Shot Type:", NULL, "Shot Attr. 1:", "Shot Attr. 2:", NULL, NULL, NULL, NULL, NULL, NULL },
2558 { (void*)&walkmisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2559 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2560 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2561 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2562 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2563 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2564 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2565 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2566 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2567 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2568 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2569 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2570 }
2571 },
2572 {
2573 eeGHOMA, { "Shot Type:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2574 { (void*)&gohmamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2575 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2576 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2577 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2578 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2579 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2580 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2581 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2582 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2583 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2584 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2585 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2586 }
2587 },
2588 {
2589 eeAQUA, { "Side:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2590 { (void*)&aquamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2591 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2592 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2593 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2594 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2595 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2596 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2597 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2598 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2599 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2600 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2601 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2602 }
2603 },
2604 {
2605 eeMANHAN, { "Frame rate:", "Size:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2606 { NULL, (void*)&manhandlamisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2607 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2608 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2609 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2610 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2611 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2612 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2613 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2614 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2615 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2616 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2617 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2618 }
2619 },
2620 {
2621 eeLANM, { "Segments:", "Segment Lag:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2622 { NULL, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2623 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2624 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2625 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",
2626 (char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2627 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2628 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2629 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2630 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2631 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2632 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2633 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2634 }
2635 },
2636 {
2637 eeMOLD, { "Segments:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2638 { NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2639 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2640 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2641 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2642 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2643 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2644 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2645 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2646 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2647 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2648 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2649 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2650 }
2651 },
2652 {
2653 eeWIZZ, { "Walk Style:", "Shot Type:", "Shot Attr. 1:", "Solid Combos OK:", "Teleport Delay:", NULL, NULL, NULL, NULL, NULL },
2654 { (void*)&wizzrobemisc1_list, (void*)&wizzrobemisc2_list, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, //10
2655 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2656 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2657 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Old Windrobe teleport",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2658 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2659 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2660 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2661 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2662 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2663 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2664 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2665 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2666 }
2667 },
2668 {
2669 eeDONGO,{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Type :" },
2670 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&dodongomisc10_list, //10
2671 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2673 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2674 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2675 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2676 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2677 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2678 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2679 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2680 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2681 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2682 }
2683 },
2684 {
2685 eeKEESE, { "Walk Style:", "Death Type:", "Enemy ID:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2686 { (void*)&keesemisc1_list, (void*)&keesemisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2689 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2690 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2691 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2692 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2693 (char *)"This Item Dispels Invisibility:",(char *)"Landing Chance (1/N):",(char *)"Landing Cooldown:",(char *)"Halt Duration",
2694 (char *)"Acceleration Frame Interval:",(char *)"Acceleration Step Modifier:",(char *)"Spawn Step:",(char *)"Tribble Timer:",
2695 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2696 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2697 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2698 }
2699 },
2700 {
2701 eeTEK, { "1/n jump start:", "1/n jump cont.:", "Jump Z velocity:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2702 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2705 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2706 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2707 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2708 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2709 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2710 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2711 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2712 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2713 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2714 }
2715 },
2716 {
2717 eeLEV, { "Emerge style:", "Submerged CSet:", "Emerging step:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2718 { (void*)&leevermisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2721 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2722 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2723 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2724 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2725 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2726 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2727 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2728 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2729 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2730 }
2731 },
2732 {
2733 eeWALLM,{ "Fixed distance:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2734 { (void*)&noyesmisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2735 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2736 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2737 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2738 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2739 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2740 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2741 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2742 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2743 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2744 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2745 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2746 }
2747 },
2748 {
2749 eeTRAP, { "Direction:", "Move Style:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2750 { (void*)&trapmisc1_list, (void*)&trapmisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2751 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2752 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2753 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2754 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2755 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2756 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2757 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2758 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2759 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2760 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2761 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2762 }
2763 },
2764 {
2765 eeROCK, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Rock size:" },
2766 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&rockmisc1_list, //10
2767 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2768 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2769 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2770 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2771 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2772 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2773 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2774 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2775 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2776 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2777 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2778 }
2779 },
2780 {
2781 eeNONE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Boss Death Trigger:" },
2782 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&yesnomisc_list, //10
2783 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2784 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2785 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2786 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2787 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2788 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2789 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2790 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2791 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2792 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2793 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2794 }
2795 },
2796 {
2797 eeGHINI, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2798 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2799 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2800 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2801 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2802 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2803 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2804 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2805 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2806 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2807 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2808 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2809 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2810 }
2811 },
2812 {
2813 eePEAHAT, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2814 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2815 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2816 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2817 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2818 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2819 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2820 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2821 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2822 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2823 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2824 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2825 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2826 }
2827 },
2828 {
2829 eeZORA, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2830 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2831 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2832 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2833 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Lava Only",(char *)"Lava and Water",(char *)"Shallow Water",
2834 (char *)"Doesn't regenerate health",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2835 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2836 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2837 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2838 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2839 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2840 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2841 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2842 }
2843 },
2844 {
2845 eeSPINTILE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2846 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2847 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2848 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2849 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2850 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2851 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2852 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2853 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2854 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2855 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2856 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2857 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2858 }
2859 },
2860 {
2861 eeFIRE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2862 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2863 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2864 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2865 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2866 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2867 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2868 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2869 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2870 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2871 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2872 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2873 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2874 }
2875 },
2876 {
2877 eeOTHER, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2878 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2879 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2880 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2881 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2882 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2883 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2884 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2885 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2886 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2887 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2888 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2889 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2890 }
2891 },
2892 {
2893 eeSCRIPT01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2894 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2895 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2896 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2897 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2898 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2899 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2900 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2901 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2902 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2903 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2904 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2905 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2906 }
2907 },
2908 {
2909 eeSCRIPT02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2910 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2911 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2912 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2913 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2914 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2915 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2916 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2917 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2918 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2919 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2920 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2921 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2922 }
2923 },
2924 {
2925 eeSCRIPT03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2926 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2927 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2928 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2929 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2930 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2931 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2932 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2933 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2934 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2935 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2936 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2937 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2938 }
2939 },
2940 {
2941 eeSCRIPT04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2942 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2943 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2944 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2945 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2946 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2947 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2948 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2949 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2950 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2951 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2952 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2953 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2954 }
2955 },
2956 {
2957 eeSCRIPT05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2958 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2959 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2960 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2961 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2962 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2963 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2964 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2965 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2966 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2967 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2968 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2969 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2970 }
2971 },
2972 {
2973 eeSCRIPT06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2974 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2975 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2976 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2977 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2978 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2979 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2980 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2981 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2982 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2983 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2984 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2985 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2986 }
2987 },
2988 {
2989 eeSCRIPT07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2990 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2991 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2992 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2993 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2994 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2995 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2996 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2997 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2998 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2999 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3000 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3001 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3002 }
3003 },
3004 {
3005 eeSCRIPT08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3006 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3007 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3008 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3009 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3010 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3011 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3012 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3013 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3014 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3015 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3016 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3017 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3018 }
3019 },
3020 {
3021 eeSCRIPT09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3022 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3023 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3024 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3025 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3026 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3027 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3028 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3029 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3030 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3031 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3032 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3033 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3034 }
3035 },
3036 {
3037 eeSCRIPT10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3038 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3039 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3040 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3041 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3042 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3043 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3044 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3045 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3046 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3047 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3048 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3049 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3050 }
3051 },
3052 {
3053 eeSCRIPT11, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3054 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3055 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3056 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3057 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3058 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3059 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3060 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3061 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3062 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3063 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3064 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3065 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3066 }
3067 },
3068 {
3069 eeSCRIPT12, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3070 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3071 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3072 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3073 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3074 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3075 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3076 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3077 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3078 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3079 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3080 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3081 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3082 }
3083 },
3084 {
3085 eeSCRIPT13, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3086 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3087 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3088 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3089 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3090 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3091 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3092 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3093 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3094 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3095 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3096 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3097 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3098 }
3099 },
3100 {
3101 eeSCRIPT14, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3102 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3104 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3105 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3106 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3107 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3108 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3109 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3110 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3111 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3112 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3113 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3114 }
3115 },
3116 {
3117 eeSCRIPT15, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3118 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3119 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3120 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3121 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3122 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3123 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3124 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3125 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3126 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3127 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3128 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3129 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3130 }
3131 },
3132 {
3133 eeSCRIPT16, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3134 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3135 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3136 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3137 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3138 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3139 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3140 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3141 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3142 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3143 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3144 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3145 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3146 }
3147 },
3148 {
3149 eeSCRIPT17, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3150 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3151 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3152 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3153 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3154 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3155 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3156 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3157 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3158 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3159 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3160 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3161 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3162 }
3163 },
3164 {
3165 eeSCRIPT18, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3166 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3167 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3168 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3169 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3170 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3171 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3172 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3173 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3174 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3175 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3176 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3177 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3178 }
3179 },
3180 {
3181 eeSCRIPT19, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3182 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3183 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3184 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3185 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3186 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3187 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3188 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3189 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3190 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3191 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3192 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3193 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3194 }
3195 },
3196 {
3197 eeSCRIPT20, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3198 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3199 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3200 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3201 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3202 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3203 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3204 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3205 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3206 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3207 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3208 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3209 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3210 }
3211 },
3212 {
3213 eeFFRIENDLY01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3214 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3215 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3216 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3217 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3218 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3219 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3220 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3221 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3222 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3223 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3224 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3225 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3226 }
3227 },
3228 {
3229 eeFFRIENDLY02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3230 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3231 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3232 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3233 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3234 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3235 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3236 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3237 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3238 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3239 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3240 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3241 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3242 }
3243 },
3244 {
3245 eeFFRIENDLY03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3246 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3247 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3248 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3249 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3250 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3251 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3252 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3253 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3254 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3255 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3256 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3257 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3258 }
3259 },
3260 {
3261 eeFFRIENDLY04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3262 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3263 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3264 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3265 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3266 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3267 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3268 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3269 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3270 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3271 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3272 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3273 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3274 }
3275 },
3276 {
3277 eeFFRIENDLY05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3278 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3279 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3280 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3281 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3282 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3283 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3284 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3285 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3286 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3287 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3288 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3289 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3290 }
3291 },
3292 {
3293 eeFFRIENDLY06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3294 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3295 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3296 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3297 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3298 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3299 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3300 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3301 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3302 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3303 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3304 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3305 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3306 }
3307 },
3308 {
3309 eeFFRIENDLY07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3310 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3311 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3313 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3314 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3315 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3316 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3317 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3318 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3319 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3320 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3321 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3322 }
3323 },
3324 {
3325 eeFFRIENDLY08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3326 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3327 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3328 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3329 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3330 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3331 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3332 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3333 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3334 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3335 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3336 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3337 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3338 }
3339 },
3340 {
3341 eeFFRIENDLY09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3342 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3345 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3346 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3347 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3348 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3349 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3350 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3351 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3352 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3353 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3354 }
3355 },
3356 {
3357 eeFFRIENDLY10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3358 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3361 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3362 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3363 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3364 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3365 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3366 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3367 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3368 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3369 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3370 }
3371 },
3372 {
3373 eeGUY, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3374 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3376 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3377 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3378 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3379 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3380 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3381 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3382 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3383 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3384 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3385 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3386 }
3387 },
3388 {
3389 eeGANON, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
3390 , NULL, NULL },
3391 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3392 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3393 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3394 { (char *)"Visible if the player has an Level 2 (or higher) Amulet item.",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Uses Full Hitbox",(char *)"BFlags[3]:",
3395 (char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",
3396 (char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",(char *)"Use Editor ",(char *)"When Not Invisible, Also Show Weapon Shots.",(char *)"Draw Cloaked When Not Invisible" },
3397 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3398 (char *)"This Item Dispels Invisibility:",(char *)"Death Shot Item ID",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3399 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3400 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3401 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3402 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3403 }
3404 },
3405 {
3406 -1, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3407 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3408 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3409 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3410 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3411 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3412 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3413 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3414 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3415 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3416 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3417 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3418 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3419 }
3420 }
3421 };
3422
3423 static std::map<int32_t, EnemyNameInfo *> *enamemap = NULL;
3424
3425 std::map<int32_t, EnemyNameInfo *> *getEnemyNameMap()
3426 {
3427 if(enamemap == NULL)
3428 {
3429 enamemap = new std::map<int32_t, EnemyNameInfo *>();
3430
3431 for(int32_t i=0;; i++)
3432 {
3433 EnemyNameInfo *inf = &enameinf[i];
3434
3435 if(inf->family == -1)
3436 break;
3437
3438 (*enamemap)[inf->family] = inf;
3439 }
3440 }
3441
3442 return enamemap;
3443 }
3444
3445 const char *npcscriptdroplist(int32_t index, int32_t *list_size)
3446 {
3447 if(index<0)
3448 {
3449 *list_size = binpcs_cnt;
3450 return NULL;
3451 }
3452
3453 return binpcs[index].first.c_str();
3454 }
3455 9 ListData npcscript_list(npcscriptdroplist, &font);
3456
3457 9 static ListData itemset_list(itemsetlist, &font);
3458 9 static ListData eneanim_list(eneanimlist, &font);
3459 9 static ListData enetype_list(enetypelist, &font);
3460 9 static ListData eweapon_list(eweaponlist, &font);
3461
3462
3463 const char *eweaponscriptdroplist(int32_t index, int32_t *list_size)
3464 {
3465 if(index<0)
3466 {
3467 *list_size = bieweapons_cnt;
3468 return NULL;
3469 }
3470
3471 return bieweapons[index].first.c_str();
3472 }
3473
3474
3475 //droplist like the dialog proc, naming scheme for this stuff is awful...
3476 9 ListData eweaponscript_list(eweaponscriptdroplist, &a4fonts[font_pfont]);
3477
3478
3479 9 static ListData walkerspawn_list(walkerspawnlist, &font);
3480
3481 9 static ListData sfx__list(sfxlist, &font);
3482
3483 /*
3484 static DIALOG enedata_dlg[] =
3485 {
3486 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3487 { jwin_tab_proc, 4, 24, 312, 192, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3488 //2
3489 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3490 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3491 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3492 //5
3493 { jwin_button_proc, 50, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3494 { jwin_button_proc, 130, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3495 //7
3496 { jwin_text_proc, 21, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3497 { jwin_text_proc, 44, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3498 { jwin_text_proc, 90, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3499 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3500 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3501 //12
3502 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3503 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3504 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3505 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3506 //16
3507 { jwin_text_proc, 114, 54, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3508 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3509 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3510 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3511 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3512 //21
3513 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3514 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3515 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3516 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3517 //25
3518 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3519 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3520 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3521 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3522 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3523 //30
3524 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3525 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3526 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3527 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3528 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3529 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3530 //36
3531 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3532 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3533 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3534 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3535 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 1, 0, NULL, NULL, NULL },
3536 //41
3537 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3538 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3539 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3540 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3541 //45
3542 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3543 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3544 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3545 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3546 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3547 //50
3548 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3549 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3550 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3551 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3552 //54
3553 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3554 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3555 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3556 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3557 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3558 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3559 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3560 { jwin_text_proc, 160, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3561 { jwin_text_proc, 160, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3562 { jwin_text_proc, 160, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3563 //64
3564 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3565 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3566 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3567 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3568 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3569 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3570 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3571 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3572 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3573 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3574 //74
3575 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3576 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Invisible", NULL, NULL },
3577 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3578 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3579 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3580 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3581 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3582 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3583 //82
3584 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3585 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3586 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3587 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3588 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3589 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3590 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3591 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3592 //90
3593 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3594 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3595 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3596 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3597 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3598 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3599 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3600 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3601 //98
3602 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3603 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3604 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3605 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3606 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3607 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3608 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3609 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3610 //106
3611 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3612 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3613 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3614 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3615 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3616 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3617 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3618 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3619 //114
3620 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3621 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3622 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3623 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3624 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3625 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3626 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3627 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3628 //122
3629 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3630 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3631 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3632 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3633 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3634 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3635 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3636 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3637 //130
3638 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3639 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3640 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3641 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3642 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3643 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3644 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3645 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3646 //138
3647 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3648 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3649 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3650 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3651 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3652 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3653 //143 - note: these are defenses 0-16, 17 is at 191
3654 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3655 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3656 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3657 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3658 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3659 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3660 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3661 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3662 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3663 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3664 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3665 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3666 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3667 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3668 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3669 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3670 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3671 //161
3672 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3673 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3674 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3675 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3676 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3677 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3678 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3679 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3680 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3681 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3682 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3683 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3684 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3685 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3686 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3687 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3688 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3689 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3690 //179
3691 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3692 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3693 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3694 //182
3695 { jwin_droplist_proc, 86, 158, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3696 { jwin_droplist_proc, 86, 176, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3697 { jwin_droplist_proc, 86, 194, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3698 { jwin_text_proc, 6, 184, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3699 { jwin_droplist_proc, 86, 180, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3700 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3701 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3702 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3703 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3704
3705 // 191
3706 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Script Weapon Defense:", NULL, NULL },
3707 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3708 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
3709 };
3710 */
3711
3712 static DIALOG enedata_dlg[] =
3713 {
3714 9 { jwin_win_proc, 0, 0, 320, 260, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3715 9 { jwin_tab_proc, 4, 17, 312, 220, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3716 //2
3717 ////tab procs must be listed prior to their elements!
3718 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_defence_tabs, NULL, (void *) enedata_dlg },
3719 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *) enedata_dlg },
3720 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *) enedata_dlg },
3721 // { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
3722
3723 //5
3724 9 { d_dummy_proc, 9904, 32, 1, 1, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3725 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *) enedata_dlg },
3726
3727 //Attributes Tab
3728 // { jwin_button_proc, 86, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3729 // { jwin_button_proc, 166, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3730 //7
3731 9 { jwin_text_proc, 21, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3732 9 { jwin_text_proc, 53, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3733 9 { jwin_text_proc, 92, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3734 9 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3735 9 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3736 //12
3737 9 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3738 9 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3739 9 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3740 9 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3741 //16
3742 9 { jwin_text_proc, 118, 53, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3743 9 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3744 9 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3745 9 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3746 9 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3747 //21
3748 9 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3749 9 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3750 9 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3751 9 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3752 //25
3753 9 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3754 9 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3755 9 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3756 9 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3757 9 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3758 //30
3759 9 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3760 9 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3761 9 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3762 9 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3763 9 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3764 9 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3765 //36
3766 9 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3767 9 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3768 9 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3769 9 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3770 9 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3771 //41
3772 9 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3773 9 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3774 9 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3775 9 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3776 //45
3777 9 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3778 9 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3779 9 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3780 9 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3781 9 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3782 //50
3783 9 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3784 9 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3785 9 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3786 9 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3787 //54
3788 //The tab for these ( npc->Attributes[] ) means that fewer fit. THey need to be rearranged. -Z
3789 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3790 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3791 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3792 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3793 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3794 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3795 9 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3796 9 { jwin_text_proc, 120+40, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3797 9 { jwin_text_proc, 120+40, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3798 9 { jwin_text_proc, 120+40, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3799 //64 : Misc Attribute boxes.
3800 9 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3801 9 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3802 9 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3803 9 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3804 9 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3805 9 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3806 9 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3807 9 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3808 9 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3809 9 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3810 //74
3811 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3812 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Does not draw", NULL, NULL },
3813 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3814 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3815 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3816 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3817 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3818 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3819 //82
3820 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3821 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3822 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3823 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3824 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3825 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3826 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3827 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3828 //90
3829 9 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3830 9 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3831 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3832 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3833 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3834 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3835 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3836 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3837 //98
3838 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3839 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3840 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3841 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3842 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3843 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3844 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3845 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3846 //106
3847 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3848 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3849 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3850 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3851 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3852 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3853 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3854 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3855 //114
3856 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3857 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3858 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3859 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3860 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3861 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3862 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3863 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3864 //122
3865 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3866 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3867 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3868 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3869 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3870 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3871 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3872 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3873 //130
3874 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3875 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3876 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3877 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3878 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3879 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3880 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3881 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3882 //138
3883 9 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3884 9 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3885 9 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3886 9 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3887 //142 timer_proc
3888 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3889 9 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3890 //144 - note: these are defenses 0-16, 17 is at 191
3891 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3892 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3893 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3894 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3895 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3896 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3897 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3898 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3899 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3900 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3901 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3902 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3903 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3904 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3905 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3906 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3907 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3908 //161
3909 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3910 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3911 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3912 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3913 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3914 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3915 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3916 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3917 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3918 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3919 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3920 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3921 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3922 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3923 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3924 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3925 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3926 9 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3927 //179
3928 9 { jwin_text_proc, 8, 161, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3929 9 { jwin_text_proc, 8, 176, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3930 9 { jwin_text_proc, 8, 191, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3931 //182
3932 9 { jwin_droplist_proc, 86, 157, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3933 9 { jwin_droplist_proc, 86, 172, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3934 9 { jwin_droplist_proc, 86, 187, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3935 9 { jwin_text_proc, 6, 214, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3936 9 { jwin_droplist_proc, 86, 210, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3937 //moved to attributes tabs
3938 9 { d_dummy_proc, 160, 126-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3939 9 { d_dummy_proc, 160, 144-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3940 9 { d_dummy_proc, 242, 122-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3941 9 { d_dummy_proc, 242, 140-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3942
3943 // 191
3944 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Whistle Weapon Defense:", NULL, NULL },
3945 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3946 //193 - sccript 1
3947 9 { jwin_text_proc, 6, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 1 Defense:", NULL, NULL },
3948 9 { jwin_text_proc, 6, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 2 Defense:", NULL, NULL },
3949 9 { jwin_text_proc, 6, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 3 Defense:", NULL, NULL },
3950 9 { jwin_text_proc, 6, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 4 Defense:", NULL, NULL },
3951 9 { jwin_text_proc, 6, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 5 Defense:", NULL, NULL },
3952 9 { jwin_text_proc, 6, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 6 Defense:", NULL, NULL },
3953 9 { jwin_text_proc, 6, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 7 Defense:", NULL, NULL },
3954 9 { jwin_text_proc, 6, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 8 Defense:", NULL, NULL },
3955 9 { jwin_text_proc, 6, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 9 Defense:", NULL, NULL },
3956 9 { jwin_text_proc, 6, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 10 Defense:", NULL, NULL },
3957 //203 script 1 pulldown
3958
3959 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
3960 9 { jwin_droplist_proc, 126, 51-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3961 9 { jwin_droplist_proc, 126, 67-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3962 9 { jwin_droplist_proc, 126, 83-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3963 9 { jwin_droplist_proc, 126, 99-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3964 9 { jwin_droplist_proc, 126, 115-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3965 9 { jwin_droplist_proc, 126, 131-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3966 9 { jwin_droplist_proc, 126, 147-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3967 9 { jwin_droplist_proc, 126, 163-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3968 9 { jwin_droplist_proc, 126, 179-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3969 9 { jwin_droplist_proc, 126, 196-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3970 //213 HitWidth and Height
3971 9 { jwin_text_proc, 12, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileWidth:", NULL, NULL },
3972 9 { jwin_edit_proc, 60, 51-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3973 9 { jwin_text_proc, 12, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileHeight:", NULL, NULL },
3974 9 { jwin_edit_proc, 60, 67-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3975 9 { jwin_text_proc, 12, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitWidth:", NULL, NULL },
3976 9 { jwin_edit_proc, 60, 83-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3977 9 { jwin_text_proc, 12, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitHeight:", NULL, NULL },
3978 9 { jwin_edit_proc, 60, 99-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3979 //221 HitZHeight
3980 9 { jwin_text_proc, 12, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitZHeight:", NULL, NULL },
3981 9 { jwin_edit_proc, 60, 115-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3982 //223 HitXOffset
3983 9 { jwin_text_proc, 12, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitXOffset:", NULL, NULL },
3984 9 { jwin_edit_proc, 60, 131-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3985 //225 HitYOffset
3986 9 { jwin_text_proc, 12, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitYOffset:", NULL, NULL },
3987 9 { jwin_edit_proc, 60, 147-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3988 //227 HitZOffset
3989 9 { jwin_text_proc, 12, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawZOffset:", NULL, NULL },
3990 9 { jwin_edit_proc, 60, 163-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3991 //229 DrawXOffset
3992 9 { jwin_text_proc, 12, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawXOffset:", NULL, NULL },
3993 9 { jwin_edit_proc, 60, 179-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3994 //231 DrawYOffset
3995 9 { jwin_text_proc, 12, 195, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawYOffset:", NULL, NULL },
3996 9 { jwin_edit_proc, 60, 195-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3997 //233 'Tiles' annotation.
3998 9 { jwin_text_proc, 96, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
3999 9 { jwin_text_proc, 96, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
4000 //235 : Weapon Sprite Pulldown
4001 9 { jwin_text_proc, 9, 90-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon Sprite:", NULL, NULL },
4002 9 { jwin_droplist_proc, 126, 86-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4003 // { jwin_edit_proc, 86, 189-4+12, 151, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4004 //237 HitWidth Override
4005 9 { jwin_check_proc, 94+50, 83, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4006 //238 HitHeight override
4007 9 { jwin_check_proc, 94+50, 99, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4008 //239 HitZHeight Override
4009 9 { jwin_check_proc, 94+50, 115, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4010 //240 HitXOffset override
4011 9 { jwin_check_proc, 94+50, 131, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4012 //241 HitYOffset Override
4013 9 { jwin_check_proc, 94+50, 147, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4014 //242 DrawZOffset Override
4015 9 { jwin_check_proc, 94+50, 163, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4016 //243 DrawXOffset Override
4017 9 { jwin_check_proc, 94+50, 179, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4018 //244 DrawYOffset Overrife
4019 9 { jwin_check_proc, 94+50, 195, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4020 //245 TileWidth Overrife
4021 9 { jwin_check_proc, 94+50, 51, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4022 //246 TileHeight Overrife
4023 9 { jwin_check_proc, 94+50, 67, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4024 //247, used to be 2
4025 9 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4026 //248 -- used to be 3
4027 9 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4028 //249 used to be 4
4029 9 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4030
4031 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
4032 // 250 Movement tabs
4033 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs , NULL, (void *) enedata_dlg },
4034 //251 Scripts tabs
4035 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs , NULL, (void *) enedata_dlg },
4036 // { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4037 //252 --was 5, OK button.
4038 9 { jwin_button_proc, 86, 240, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
4039 //253 -- CANCEL BUTTON
4040 9 { jwin_button_proc, 166, 240, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
4041 //254
4042 9 { jwin_check_proc, 6, 52, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[0]", NULL, NULL },
4043 9 { jwin_check_proc, 6, 62, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[1]", NULL, NULL },
4044 9 { jwin_check_proc, 6, 72, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[2]", NULL, NULL },
4045 9 { jwin_check_proc, 6, 82, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[3]", NULL, NULL },
4046 9 { jwin_check_proc, 6, 92, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[4]", NULL, NULL },
4047 9 { jwin_check_proc, 6, 102, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[5]", NULL, NULL },
4048 //260
4049 9 { jwin_check_proc, 6, 112, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[6]", NULL, NULL },
4050 9 { jwin_check_proc, 6, 122, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[7]", NULL, NULL },
4051 9 { jwin_check_proc, 6, 132, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[8]", NULL, NULL },
4052 9 { jwin_check_proc, 6, 142, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[9]", NULL, NULL },
4053 9 { jwin_check_proc, 6, 152, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[10]", NULL, NULL },
4054 //265
4055 9 { jwin_check_proc, 6, 162, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[11]", NULL, NULL },
4056 9 { jwin_check_proc, 6, 172, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[12]", NULL, NULL },
4057 9 { jwin_check_proc, 6, 182, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[13]", NULL, NULL },
4058 9 { jwin_check_proc, 6, 192, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[14]", NULL, NULL },
4059 9 { jwin_check_proc, 6, 202, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[15]", NULL, NULL },
4060 //270
4061 //attributes page 1, attrib 1 to 8 move from basic tab?
4062 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[0]", NULL, NULL },
4063 9 { d_dummy_proc, 9970, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[1]", NULL, NULL },
4064 9 { d_dummy_proc, 9970, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[2]", NULL, NULL },
4065 9 { d_dummy_proc, 9970, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[3]", NULL, NULL },
4066 9 { d_dummy_proc, 9970, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[4]", NULL, NULL },
4067 9 { d_dummy_proc, 9970, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[5]", NULL, NULL },
4068 9 { d_dummy_proc, 9970, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[6]", NULL, NULL },
4069 9 { d_dummy_proc, 9970, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[7]", NULL, NULL },
4070 //278 : Misc Attribute boxes.
4071 9 { d_dummy_proc, 9906, 56, 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4072 9 { d_dummy_proc, 9906, 56+(18), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4073 9 { d_dummy_proc, 9906, 56+(18*2), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4074 9 { d_dummy_proc, 9906, 56+(18*3), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4075 9 { d_dummy_proc, 9906, 56+(18*4), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4076 9 { d_dummy_proc, 9906, 56+(18*5), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4077 9 { d_dummy_proc, 9906, 56+(18*6), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4078 9 { d_dummy_proc, 9906, 56+(18*7), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4079 //286
4080 //attributes page 2, attrib 9 to 16
4081 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[8]", NULL, NULL },
4082 9 { d_dummy_proc, 9906, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Lower Attributes are on Basic->Data 2", NULL, NULL },
4083 //288
4084 9 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
4085 9 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
4086 //290
4087 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 13:", NULL, NULL },
4088 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 14:", NULL, NULL },
4089 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 15:", NULL, NULL },
4090 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 16:", NULL, NULL },
4091 //294 : Misc Attribute boxes.
4092 9 { d_dummy_proc, 9986, 56, 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4093 9 { d_dummy_proc, 9986, 56+(18), 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4094 //296
4095 9 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4096 9 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4097 //298
4098 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4099 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4100 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4101 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4102 //302
4103 //attributes page 3, attrib 17 to 24
4104 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 17:", NULL, NULL },
4105 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 18:", NULL, NULL },
4106 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 19:", NULL, NULL },
4107 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 20:", NULL, NULL },
4108 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 21:", NULL, NULL },
4109 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 22:", NULL, NULL },
4110 //308
4111 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 23:", NULL, NULL },
4112 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 24:", NULL, NULL },
4113 //310 : Misc Attribute boxes.
4114 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4115 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4116 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4117 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4118 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4119 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4120 //316
4121 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4122 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4123 //318
4124 //attributes page 4, attrib 25 to 32
4125 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 25:", NULL, NULL },
4126 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 26:", NULL, NULL },
4127 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 27:", NULL, NULL },
4128 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 28:", NULL, NULL },
4129 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 29:", NULL, NULL },
4130 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 30:", NULL, NULL },
4131 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 31:", NULL, NULL },
4132 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 32:", NULL, NULL },
4133 //327 : Misc Attribute boxes.
4134 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4135 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4136 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4137 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4138 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4139 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4140 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4141 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4142 //334
4143 9 { d_dummy_proc, 112+10, 47+38+10 + 18, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Action Script:", NULL, NULL },
4144
4145 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &npcscript_list, NULL, NULL },
4146 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "NPC Action Script:", NULL, NULL },
4147 //337
4148 //npc Script InitD Labels (not editable)
4149 // { jwin_text_proc, 6+10, 10+29+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D0:", NULL, NULL },
4150 // { jwin_text_proc, 6+10, 10+47+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D1:", NULL, NULL },
4151 // { jwin_text_proc, 6+10, 10+65+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D2:", NULL, NULL },
4152 // { jwin_text_proc, 6+10, 10+83+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D3:", NULL, NULL },
4153 // { jwin_text_proc, 6+10, 10+101+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D4:", NULL, NULL },
4154 // { jwin_text_proc, 6+10, 10+119+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D5:", NULL, NULL },
4155 // { jwin_text_proc, 6+10, 10+137+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D6:", NULL, NULL },
4156 // { jwin_text_proc, 6+10, 10+155+20, 24, 12, 0, 0, 0, 0, 0, 0, (void *) "D7:", NULL, NULL },
4157
4158 //editable npc script InitD fields
4159 //337
4160 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*) "InitD[0]", NULL, NULL},
4161 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4162 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4163 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4164 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4165 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4166 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4167 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4168
4169 // { jwin_edit_proc, 6+10, 10+29+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4170 // { jwin_edit_proc, 6+10, 10+47+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4171 // { jwin_edit_proc, 6+10, 10+65+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4172 // { jwin_edit_proc, 6+10, 10+83+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4173 // { jwin_edit_proc, 6+10, 10+101+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4174 // { jwin_edit_proc, 6+10, 10+119+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4175 // { jwin_edit_proc, 6+10, 10+137+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4176 // { jwin_edit_proc, 6+10, 10+155+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4177
4178 //NPC InitD Data fields
4179 //345
4180 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4181 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4182 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4183 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4184 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4185 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4186 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4187 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4188 //353
4189 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[0]", NULL, NULL },
4190 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4191 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4192 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4193 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4194 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4195 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4196 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4197 //361
4198 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4199 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4200 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4201 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4202 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4203 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4204 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4205 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4206 //369
4207 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "EWeapon Script:", NULL, NULL },
4208 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &eweaponscript_list, NULL, NULL },
4209 //371
4210 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Obeys Gravity", NULL, NULL },
4211 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Fall Into Pitfalls", NULL, NULL },
4212 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk Over Pitfalls", NULL, NULL },
4213 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Drown In Liquid", NULL, NULL },
4214 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk On Liquid", NULL, NULL },
4215 /*
4216 // 248 scripts
4217 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs, NULL, (void *)enedata_dlg },
4218 //249 graphics
4219 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *)enedata_dlg },
4220 //250 sounds
4221 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_sounds_tabs, NULL, (void *)enedata_dlg },
4222 //251 basic
4223 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *)enedata_dlg },
4224 //252 attacks
4225 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attacks_tabs, NULL, (void *)enedata_dlg },
4226 //253 movement
4227 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs, NULL, (void *)enedata_dlg },
4228 //254 flags
4229 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *)enedata_dlg },
4230 //255 attributes
4231 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attribs_tabs, NULL, (void *)enedata_dlg },
4232 */
4233 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
4234 //377
4235 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4236 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4237 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4238 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4239 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4240 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4241 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4242 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4243 //385
4244 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4245 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4246 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4247 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4248 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4249 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4250 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4251 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4252 //393
4253 9 { jwin_text_proc, 9, 108-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Shadow Sprite:", NULL, NULL },
4254 9 { jwin_droplist_proc, 126, 104-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4255 9 { jwin_text_proc, 9, 126-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sprite:", NULL, NULL },
4256 9 { jwin_droplist_proc, 126, 122-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4257 9 { jwin_text_proc, 9, 144-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Sprite:", NULL, NULL },
4258 9 { jwin_droplist_proc, 126, 140-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4259 //399
4260 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignores \"Temp No Return\".", NULL, NULL },
4261 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignored by Kill All Enemies effects.", NULL, NULL },
4262 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00040000", NULL, NULL },
4263 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00080000", NULL, NULL },
4264 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00100000", NULL, NULL },
4265 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00200000", NULL, NULL },
4266 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00400000", NULL, NULL },
4267 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00800000", NULL, NULL },
4268 //407
4269 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x01000000", NULL, NULL },
4270 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x02000000", NULL, NULL },
4271 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x04000000", NULL, NULL },
4272 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x08000000", NULL, NULL },
4273 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x10000000", NULL, NULL },
4274 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x20000000", NULL, NULL },
4275 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x40000000", NULL, NULL },
4276 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x80000000", NULL, NULL },
4277 //415
4278 9 { jwin_text_proc, 6, 216, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "SwitchHook Weapon Defense:", NULL, NULL },
4279 9 { jwin_droplist_proc, 126, 216-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
4280 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Liquid", NULL, NULL },
4281 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Shallow Liquid", NULL, NULL },
4282 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Pitfalls", NULL, NULL },
4283 //420
4284 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through solidity", NULL, NULL },
4285 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through No Enemies flags / etc", NULL, NULL },
4286 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through screen edge", NULL, NULL },
4287 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Use 'scripted movement' for engine movement", NULL, NULL },
4288 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Cannot be pushed by moving solid objects", NULL, NULL },
4289 9 { jwin_text_proc, 6, 120, 280, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Below flags only affect scripted movement functions", NULL, NULL },
4290 //NPC Script Help buttons
4291 //426
4292 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4293 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4294 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4295 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4296 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4297 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4298 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4299 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4300 //434
4301 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4302 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4303 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4304 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4305 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4306 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4307 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4308 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4309
4310 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
4311 };
4312
4313
4314 void setEnemyLabels(int32_t family)
4315 {
4316 std::map<int32_t, EnemyNameInfo *> *nmap = getEnemyNameMap();
4317 std::map<int32_t, EnemyNameInfo *>::iterator it = nmap->find(family);
4318 EnemyNameInfo *inf = NULL;
4319
4320 if(it != nmap->end())
4321 inf = it->second;
4322
4323 // Default labels
4324 enedata_dlg[54].dp = (void*)"Misc. Attr. 1:";
4325 enedata_dlg[55].dp = (void*)"Misc. Attr. 2:";
4326 enedata_dlg[56].dp = (void*)"Misc. Attr. 3:";
4327 enedata_dlg[57].dp = (void*)"Misc. Attr. 4:";
4328 enedata_dlg[58].dp = (void*)"Misc. Attr. 5:";
4329 enedata_dlg[59].dp = (void*)"Misc. Attr. 6:";
4330 enedata_dlg[60].dp = (void*)"Misc. Attr. 7:";
4331 enedata_dlg[61].dp = (void*)"Misc. Attr. 8:";
4332 enedata_dlg[62].dp = (void*)"Misc. Attr. 9:";
4333 enedata_dlg[63].dp = (void*)"Misc. Attr. 10:";
4334
4335 if(family==eeKEESE || family==eeGHINI || family==eePEAHAT || family==eeMANHAN
4336 || family==eeGLEEOK || family==eePATRA || family==eeDIG)
4337 enedata_dlg[22].dp = (void*)"Turn Freq.:";
4338 else
4339 enedata_dlg[22].dp = (void*)"Halt Rate:";
4340
4341 //set enemy editor new 2.55 flags 1 to 16 label
4342 for(int32_t i = 0; i < 16; i++)
4343 {
4344 if(inf != NULL)
4345 {
4346 if(inf->flags[i]!=NULL)
4347 {
4348 enedata_dlg[254+i].dp = (char*)inf->flags[i];
4349 }
4350 else
4351 {
4352 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4353 }
4354 }
4355
4356 }
4357
4358 //Enemy Attribute Labels, starting at 11
4359 for ( int32_t q = 10; q < 16; q++ ) //check these numbers! -Z
4360 {
4361 if(inf != NULL && inf->attributes[q]!=NULL)
4362 {
4363 enedata_dlg[288+(q-10)].dp = (char*)inf->attributes[q];
4364 }
4365 if(inf != NULL && inf->list[q] != NULL)
4366 {
4367 enedata_dlg[296+(q-10)].proc = jwin_droplist_proc;
4368 enedata_dlg[296+(q-10)].fg = jwin_pal[jcTEXTFG];
4369 enedata_dlg[296+(q-10)].bg = jwin_pal[jcTEXTBG];
4370 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4371 enedata_dlg[296+(q-10)].dp = inf->list[q];
4372 enedata_dlg[296+(q-10)].dp2 = NULL;
4373 enedata_dlg[296+(q-10)].h = 22;
4374 }
4375 else
4376 {
4377 enedata_dlg[296+(q-10)].proc = jwin_edit_proc;
4378 enedata_dlg[296+(q-10)].fg = vc(14);
4379 enedata_dlg[296+(q-10)].bg = vc(1);
4380 enedata_dlg[296+(q-10)].dp = NULL;
4381 enedata_dlg[296+(q-10)].d1 = 6;
4382 enedata_dlg[296+(q-10)].h = 24;
4383 enedata_dlg[296+(q-10)].dp2 = get_zc_font(font_lfont_l);
4384 }
4385 }
4386 for ( int32_t q = 16; q < 24; q++ ) //check these numbers! -Z
4387 {
4388 if(inf->attributes[q]!=NULL)
4389 {
4390 enedata_dlg[302+(q-16)].dp = (char*)inf->attributes[q];
4391 }
4392 if(inf != NULL && inf->list[q] != NULL)
4393 {
4394 enedata_dlg[310+(q-16)].proc = jwin_droplist_proc;
4395 enedata_dlg[310+(q-16)].fg = jwin_pal[jcTEXTFG];
4396 enedata_dlg[310+(q-16)].bg = jwin_pal[jcTEXTBG];
4397 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4398 enedata_dlg[310+(q-16)].dp = inf->list[q];
4399 enedata_dlg[310+(q-16)].dp2 = NULL;
4400 enedata_dlg[310+(q-16)].h = 22;
4401 }
4402 else
4403 {
4404 enedata_dlg[310+(q-16)].proc = jwin_edit_proc;
4405 enedata_dlg[310+(q-16)].fg = vc(14);
4406 enedata_dlg[310+(q-16)].bg = vc(1);
4407 enedata_dlg[310+(q-16)].dp = NULL;
4408 enedata_dlg[310+(q-16)].d1 = 6;
4409 enedata_dlg[310+(q-16)].h = 24;
4410 enedata_dlg[310+(q-16)].dp2 = get_zc_font(font_lfont_l);
4411 }
4412 }
4413 for ( int32_t q = 24; q < 32; q++ ) //check these numbers! -Z
4414 {
4415 if(inf->attributes[q]!=NULL)
4416 {
4417 enedata_dlg[318+(q-24)].dp = (char*)inf->attributes[q]; //attr err
4418 }
4419 if(inf != NULL && inf->list[q] != NULL)
4420 {
4421 enedata_dlg[326+(q-24)].proc = jwin_droplist_proc;
4422 enedata_dlg[326+(q-24)].fg = jwin_pal[jcTEXTFG];
4423 enedata_dlg[326+(q-24)].bg = jwin_pal[jcTEXTBG];
4424 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4425 enedata_dlg[326+(q-24)].dp = inf->list[q];
4426 enedata_dlg[326+(q-24)].dp2 = NULL;
4427 enedata_dlg[326+(q-24)].h = 22;
4428 }
4429 else
4430 {
4431 enedata_dlg[326+(q-24)].proc = jwin_edit_proc;
4432 enedata_dlg[326+(q-24)].fg = vc(14);
4433 enedata_dlg[326+(q-24)].bg = vc(1);
4434 enedata_dlg[326+(q-24)].dp = NULL;
4435 enedata_dlg[326+(q-24)].d1 = 6;
4436 enedata_dlg[326+(q-24)].h = 24;
4437 enedata_dlg[326+(q-24)].dp2 = get_zc_font(font_lfont_l);
4438 }
4439 }
4440
4441 for(int32_t i = 0; i < 10; i++)
4442 {
4443 if(inf != NULL)
4444 {
4445 if(inf->misc[i]!=NULL)
4446 {
4447 enedata_dlg[54+i].dp = (char*)inf->misc[i];
4448 //enedata_dlg[54+i].flags = enedata_dlg[64+i].flags = 0;
4449 }
4450 else
4451 {
4452 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4453 }
4454 }
4455
4456 if(inf != NULL && inf->list[i] != NULL)
4457 {
4458 enedata_dlg[64+i].proc = jwin_droplist_proc;
4459 enedata_dlg[64+i].fg = jwin_pal[jcTEXTFG];
4460 enedata_dlg[64+i].bg = jwin_pal[jcTEXTBG];
4461 ((ListData*)inf->list[i])->font = (&a4fonts[font_lfont_l]);
4462 enedata_dlg[64+i].dp = inf->list[i];
4463 enedata_dlg[64+i].dp2 = NULL;
4464 enedata_dlg[64+i].h = 22;
4465 }
4466 else
4467 {
4468 enedata_dlg[64+i].proc = jwin_edit_proc;
4469 enedata_dlg[64+i].fg = vc(14);
4470 enedata_dlg[64+i].bg = vc(1);
4471 enedata_dlg[64+i].dp = NULL;
4472 enedata_dlg[64+i].d1 = 6;
4473 enedata_dlg[64+i].h = 24;
4474 enedata_dlg[64+i].dp2 = get_zc_font(font_lfont_l);
4475 }
4476 }
4477
4478 bool r = 0 != get_qr(qr_NEWENEMYTILES);
4479 enedata_dlg[r ? 47 : 48].flags |= D_DISABLED;
4480 enedata_dlg[r ? 48 : 47].flags &= ~D_DISABLED;
4481 enedata_dlg[r ? 140 : 141].flags |= D_DISABLED;
4482 enedata_dlg[r ? 141 : 140].flags &= ~D_DISABLED;
4483
4484 if(family==eeTRAP || family==eeROCK || family==eeDONGO ) //|| family==eeGANON)
4485 {
4486 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags |= D_DISABLED;
4487
4488 enedata_dlg[192].flags |= D_DISABLED; //Defenses disabled for Traps. rocks,. Dodongos and Ganon.
4489 //We will need to remove Ganon from this list once we give him defence properties in the EE. -Z
4490
4491 enedata_dlg[203].d1 |= D_DISABLED;
4492 enedata_dlg[204].d1 |= D_DISABLED;
4493 enedata_dlg[205].d1 |= D_DISABLED;
4494 enedata_dlg[206].d1 |= D_DISABLED;
4495 enedata_dlg[207].d1 |= D_DISABLED;
4496 enedata_dlg[208].d1 |= D_DISABLED;
4497 enedata_dlg[209].d1 |= D_DISABLED;
4498 enedata_dlg[210].d1 |= D_DISABLED;
4499 enedata_dlg[211].d1 |= D_DISABLED;
4500 enedata_dlg[212].d1 |= D_DISABLED;
4501 }
4502 else
4503 {
4504 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags &= ~D_DISABLED;
4505
4506 enedata_dlg[192].flags &= ~D_DISABLED;
4507 enedata_dlg[203].d1 &= ~D_DISABLED;
4508 enedata_dlg[204].d1 &= ~D_DISABLED;
4509 enedata_dlg[205].d1 &= ~D_DISABLED;
4510 enedata_dlg[206].d1 &= ~D_DISABLED;
4511 enedata_dlg[207].d1 &= ~D_DISABLED;
4512 enedata_dlg[208].d1 &= ~D_DISABLED;
4513 enedata_dlg[209].d1 &= ~D_DISABLED;
4514 enedata_dlg[210].d1 &= ~D_DISABLED;
4515 enedata_dlg[211].d1 &= ~D_DISABLED;
4516 enedata_dlg[212].d1 &= ~D_DISABLED;
4517 }
4518
4519 if(!(family==eeWALK || family==eeFIRE || family==eeOTHER))
4520 {
4521 enedata_dlg[98].flags |= D_DISABLED;
4522 enedata_dlg[99].flags |= D_DISABLED;
4523 enedata_dlg[100].flags |= D_DISABLED;
4524 enedata_dlg[101].flags |= D_DISABLED;
4525 enedata_dlg[102].flags |= D_DISABLED;
4526 enedata_dlg[186].flags |= D_DISABLED;
4527 }
4528 else
4529 {
4530 enedata_dlg[98].flags &= ~D_DISABLED;
4531 enedata_dlg[99].flags &= ~D_DISABLED;
4532 enedata_dlg[100].flags &= ~D_DISABLED;
4533 enedata_dlg[101].flags &= ~D_DISABLED;
4534 enedata_dlg[102].flags &= ~D_DISABLED;
4535 enedata_dlg[186].flags &= ~D_DISABLED;
4536 }
4537 }
4538
4539 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c)
4540 {
4541 //these are here to bypass compiler warnings about unused arguments
4542 c=c;
4543 int32_t *tempint=enedata_flags2_list;
4544 tempint=tempint;
4545
4546 switch(msg)
4547 {
4548 case MSG_CLICK:
4549 {
4550 int32_t f = -8; // Suppress Flip, but in a way that the lowest 3 bits are 0. (Trust me here.) -L
4551 int32_t t = d->d1;
4552 int32_t cs = d->d2;
4553
4554 if((CHECK_CTRL_CMD)
4555 ? select_tile_2(t,f,1,cs,true)
4556 : select_tile(t,f,1,cs,true))
4557 {
4558 d->d1 = t;
4559 enedata_dlg[247].d2 = cs;
4560 enedata_dlg[248].d2 = cs;
4561 enedata_dlg[249].d2 = cs;
4562 return D_REDRAW;
4563 }
4564 }
4565 break;
4566
4567 case MSG_DRAW:
4568 d->w = 36;
4569 d->h = 36;
4570
4571 BITMAP *buf = create_bitmap_ex(8,20,20);
4572 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
4573
4574 if(buf && bigbmp)
4575 {
4576 clear_bitmap(buf);
4577
4578 if(d->d1)
4579 overtile16(buf,d->d1,2,2,d->d2,0);
4580
4581 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-3, d->h-3);
4582 destroy_bitmap(buf);
4583 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
4584 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
4585 destroy_bitmap(bigbmp);
4586 }
4587
4588 // text_mode(d->bg);
4589 break;
4590 }
4591
4592 return D_O_K;
4593 }
4594
4595 void setEnemyScriptLabels(const guydata& test, char (&npc_initd_labels)[8][65], char (&weapon_initd_labels)[8][65])
4596 {
4597 for (int32_t q = 0; q < 8; ++q)
4598 {
4599 sprintf(npc_initd_labels[q], "InitD[%d]", q);
4600 sprintf(weapon_initd_labels[q], "InitD[%d]", q);
4601 enedata_dlg[345 + q].d1 &= ~0xF;
4602 enedata_dlg[345 + q].d1 |= nswapDEC;
4603 enedata_dlg[361 + q].d1 &= ~0xF;
4604 enedata_dlg[361 + q].d1 |= nswapDEC;
4605 enedata_dlg[426 + q].flags |= D_DISABLED;
4606 enedata_dlg[434 + q].flags |= D_DISABLED;
4607 }
4608
4609 if (test.script)
4610 {
4611 zasm_meta const& meta = guyscripts[test.script]->meta;
4612 for (int32_t q = 0; q < 8; ++q)
4613 {
4614 if (!meta.initd[q].empty())
4615 snprintf(npc_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4616 if(!meta.initd_help[q].empty())
4617 enedata_dlg[426 + q].flags &= ~D_DISABLED;
4618 DIALOG* swapbtn = (DIALOG*)enedata_dlg[345 + q].dp3;
4619 if(meta.initd_type[q]>-1)
4620 {
4621 swapbtn->d1 &= ~0xF;
4622 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4623 }
4624 }
4625 }
4626
4627 if (test.weaponscript)
4628 {
4629 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4630 for (int32_t q = 0; q < 8; ++q)
4631 {
4632 if(!meta.initd[q].empty())
4633 snprintf(weapon_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4634 if (!meta.initd_help[q].empty())
4635 enedata_dlg[434 + q].flags &= ~D_DISABLED;
4636 DIALOG* swapbtn = (DIALOG*)enedata_dlg[361 + q].dp3;
4637 if (meta.initd_type[q] > -1)
4638 {
4639 swapbtn->d1 &= ~0xF;
4640 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4641 }
4642 }
4643 }
4644 }
4645
4646 void showEnemyScriptMetaHelp(const guydata& test, int32_t i)
4647 {
4648 if (i < 8)
4649 {
4650 if (test.script)
4651 {
4652 zasm_meta const& meta = guyscripts[test.script]->meta;
4653 if(!meta.initd_help[i].empty())
4654 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4655 }
4656 }
4657 else
4658 {
4659 i -= 8;
4660 if (test.weaponscript)
4661 {
4662 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4663 if (!meta.initd_help[i].empty())
4664 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4665 }
4666 }
4667 }
4668
4669 void edit_enemydata(int32_t index)
4670 {
4671 //guysbuf[index].script = 1;
4672 char hp[8], dp[8], wdp[8], rat[8], hrt[8], hom[8], grm[8], spd[8],
4673 frt[8], efr[8], bsp[8];
4674 char w[8],h[8],sw[8],sh[8],ew[8],eh[8];
4675 char name[64];
4676 char ms[12][8];
4677 char attribs[32][8];
4678 char enemynumstr[75];
4679 char hitx[8], hity[8], hitz[8], tiley[8], tilex[8], hitofsx[8], hitofsy[8], hitofsz[8], drawofsx[8], drawofsy[8];
4680 char npc_initd_labels[8][65];
4681 char weapon_initd_labels[8][65];
4682 char weap_initdvals[8][13];
4683
4684 char initdvals[8][13];
4685 //begin npc script
4686 int32_t j = 0; build_binpcs_list(); //npc scripts lister
4687 for(j = 0; j < binpcs_cnt; j++)
4688 {
4689 if(binpcs[j].second == guysbuf[index].script -1)
4690 {
4691 enedata_dlg[335].d1 = j;
4692 break;
4693 }
4694 }
4695
4696 int32_t j2 = 0;
4697 build_bieweapons_list(); //lweapon scripts lister
4698 for(j2 = 0; j2 < bieweapons_cnt; j2++)
4699 {
4700 if(bieweapons[j2].second == guysbuf[index].weaponscript -1)
4701 {
4702 enedata_dlg[370].d1 = j2;
4703 break;
4704 }
4705 }
4706
4707 for ( int32_t q = 0; q < 8; q++ )
4708 {
4709 //NPC InitD / WeaponInitD
4710 enedata_dlg[345+q].dp = initdvals[q];
4711 enedata_dlg[361+q].dp = weap_initdvals[q];
4712 enedata_dlg[345+q].fg = guysbuf[index].initD[q];
4713 enedata_dlg[361+q].fg = guysbuf[index].weap_initiald[q];
4714 enedata_dlg[345+q].dp3 = &(enedata_dlg[377+q]);
4715 enedata_dlg[361+q].dp3 = &(enedata_dlg[385+q]);
4716
4717 //InitD Labels
4718 enedata_dlg[337 + q].dp = npc_initd_labels[q];
4719 enedata_dlg[353 + q].dp = weapon_initd_labels[q];
4720 }
4721
4722 //end npc script
4723
4724 //disable the missing dialog items!
4725 //else they will lurk in the background
4726 //stealing mouse focus -DD
4727 for(int32_t i=0; enedata_flags2_list[i] != -1; i++)
4728 {
4729 enedata_dlg[enedata_flags2_list[i]].proc = d_dummy_proc;
4730 enedata_dlg[enedata_flags2_list[i]].x = 0;
4731 enedata_dlg[enedata_flags2_list[i]].y = 0;
4732 enedata_dlg[enedata_flags2_list[i]].w = 0;
4733 enedata_dlg[enedata_flags2_list[i]].h = 0;
4734 }
4735
4736 sprintf(enemynumstr,"Enemy %d: %s", index, guy_string[index]);
4737 enedata_dlg[0].dp = enemynumstr;
4738 enedata_dlg[0].dp2 = get_zc_font(font_lfont);
4739 enedata_dlg[247].d1 = guysbuf[index].tile;
4740 enedata_dlg[247].d2 = guysbuf[index].cset;
4741 enedata_dlg[248].d1 = guysbuf[index].s_tile;
4742 enedata_dlg[248].d2 = guysbuf[index].cset;
4743 enedata_dlg[249].d1 = guysbuf[index].e_tile;
4744 enedata_dlg[249].d2 = guysbuf[index].cset;
4745
4746 // Enemy weapon list
4747 if(guysbuf[index].weapon==wNone)
4748 {
4749 enedata_dlg[45].d1 = 0;
4750 }
4751 else
4752 {
4753 if(biew_cnt==-1)
4754 {
4755 build_biew_list();
4756 }
4757
4758 for(int32_t j=0; j<biew_cnt; j++)
4759 {
4760 if(biew[j].i == guysbuf[index].weapon /*- wEnemyWeapons*/)
4761 enedata_dlg[45].d1 = j;
4762 }
4763 }
4764
4765 // Enemy family list
4766 if(bief_cnt==-1)
4767 {
4768 build_bief_list();
4769 }
4770
4771 for(int32_t j=0; j<bief_cnt; j++)
4772 {
4773 if(bief[j].i == guysbuf[index].family)
4774 enedata_dlg[46].d1 = j;
4775 }
4776
4777 // Enemy animation list
4778 if(biea_cnt==-1)
4779 {
4780 build_biea_list();
4781 }
4782
4783 for(int32_t j=0; j<biea_cnt; j++)
4784 {
4785 if(biea[j].i == guysbuf[index].anim)
4786 enedata_dlg[47].d1 = j;
4787
4788 if(biea[j].i == guysbuf[index].e_anim)
4789 enedata_dlg[48].d1 = j;
4790 }
4791
4792
4793 enedata_dlg[49].d1 = guysbuf[index].item_set;
4794
4795 sprintf(w,"%d",guysbuf[index].width);
4796 sprintf(h,"%d",guysbuf[index].height);
4797 sprintf(sw,"%d",guysbuf[index].s_width);
4798 sprintf(sh,"%d",guysbuf[index].s_height);
4799 sprintf(ew,"%d",guysbuf[index].e_width);
4800 sprintf(eh,"%d",guysbuf[index].e_height);
4801 enedata_dlg[30].dp = w;
4802 enedata_dlg[31].dp = h;
4803 enedata_dlg[32].dp = sw;
4804 enedata_dlg[33].dp = sh;
4805 enedata_dlg[34].dp = ew;
4806 enedata_dlg[35].dp = eh;
4807
4808 sprintf(hp,"%d",guysbuf[index].hp);
4809 sprintf(dp,"%d",guysbuf[index].dp);
4810 sprintf(wdp,"%d",guysbuf[index].wdp);
4811 sprintf(grm,"%d",guysbuf[index].grumble);
4812 enedata_dlg[37].dp = hp;
4813 enedata_dlg[38].dp = dp;
4814 enedata_dlg[39].dp = wdp;
4815 enedata_dlg[40].dp = grm;
4816
4817 sprintf(rat,"%d",guysbuf[index].rate);
4818 sprintf(hrt,"%d",guysbuf[index].hrate);
4819 sprintf(hom,"%d",guysbuf[index].homing);
4820 sprintf(spd,"%d",guysbuf[index].step);
4821 enedata_dlg[41].dp = rat;
4822 enedata_dlg[42].dp = hrt;
4823 enedata_dlg[43].dp = hom;
4824 enedata_dlg[44].dp = spd;
4825
4826 sprintf(name,"%s",guy_string[index]);
4827 enedata_dlg[36].dp = name;
4828
4829 for (int q = 0; q < 32; ++q)
4830 {
4831 sprintf(ms[q], "%d", guysbuf[index].attributes[q]);
4832 sprintf(attribs[q], "%d", guysbuf[index].attributes[q]);
4833 }
4834
4835
4836 for(int32_t j=0; j <= edefBYRNA; j++)
4837 {
4838 enedata_dlg[j+161].d1 = guysbuf[index].defense[j];
4839 }
4840
4841 enedata_dlg[192].d1 = guysbuf[index].defense[edefWhistle];
4842 enedata_dlg[416].d1 = guysbuf[index].defense[edefSwitchHook];
4843
4844
4845 //Script Defenses
4846 enedata_dlg[203].d1 = guysbuf[index].defense[edefSCRIPT01];
4847 enedata_dlg[204].d1 = guysbuf[index].defense[edefSCRIPT02];
4848 enedata_dlg[205].d1 = guysbuf[index].defense[edefSCRIPT03];
4849 enedata_dlg[206].d1 = guysbuf[index].defense[edefSCRIPT04];
4850 enedata_dlg[207].d1 = guysbuf[index].defense[edefSCRIPT05];
4851 enedata_dlg[208].d1 = guysbuf[index].defense[edefSCRIPT06];
4852 enedata_dlg[209].d1 = guysbuf[index].defense[edefSCRIPT07];
4853 enedata_dlg[210].d1 = guysbuf[index].defense[edefSCRIPT08];
4854 enedata_dlg[211].d1 = guysbuf[index].defense[edefSCRIPT09];
4855 enedata_dlg[212].d1 = guysbuf[index].defense[edefSCRIPT10];
4856
4857 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
4858 sprintf(tilex,"%d",guysbuf[index].txsz);
4859 sprintf(tiley,"%d",guysbuf[index].tysz);
4860 sprintf(hitx,"%d",guysbuf[index].hxsz);
4861 sprintf(hity,"%d",guysbuf[index].hysz);
4862 sprintf(hitz,"%d",guysbuf[index].hzsz);
4863
4864 enedata_dlg[214].dp = tilex;
4865 enedata_dlg[216].dp = tiley;
4866 enedata_dlg[218].dp = hitx;
4867 enedata_dlg[220].dp = hity;
4868 enedata_dlg[222].dp = hitz;
4869
4870 //HitXOffset, HitYOFfset, hitZOffset, DrawXOffsrt, DrawYOffset
4871 sprintf(hitofsx,"%d",guysbuf[index].hxofs);
4872 sprintf(hitofsy,"%d",guysbuf[index].hyofs);
4873 sprintf(hitofsz,"%d",guysbuf[index].zofs);
4874 sprintf(drawofsx,"%d",guysbuf[index].xofs);
4875 sprintf(drawofsy,"%d",guysbuf[index].yofs); //This seems to be setting to +48 or something with any value set?! -Z
4876
4877 enedata_dlg[224].dp = hitofsx;
4878 enedata_dlg[226].dp = hitofsy;
4879 enedata_dlg[228].dp = hitofsz;
4880 enedata_dlg[230].dp = drawofsx;
4881 enedata_dlg[232].dp = drawofsy; //This seems to be setting to +48 or something with any value set?! -Z
4882
4883 //Override flags
4884 enedata_dlg[237].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_WIDTH) ? D_SELECTED : 0;
4885 enedata_dlg[238].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_HEIGHT) ? D_SELECTED : 0;
4886 enedata_dlg[239].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Z_HEIGHT) ? D_SELECTED : 0;
4887 enedata_dlg[240].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_X_OFFSET) ? D_SELECTED : 0;
4888 enedata_dlg[241].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Y_OFFSET) ? D_SELECTED : 0;
4889 enedata_dlg[242].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Z_OFFSET) ? D_SELECTED : 0;
4890 enedata_dlg[243].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_X_OFFSET) ? D_SELECTED : 0;
4891 enedata_dlg[244].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Y_OFFSET) ? D_SELECTED : 0;
4892 enedata_dlg[245].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_WIDTH) ? D_SELECTED : 0;
4893 enedata_dlg[246].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_HEIGHT) ? D_SELECTED : 0;
4894
4895 //New Misc FLags (2.55, flag1 to flag16)
4896 enedata_dlg[254].flags = (guysbuf[index].editorflags&ENEMY_FLAG1) ? D_SELECTED : 0;
4897 enedata_dlg[255].flags = (guysbuf[index].editorflags&ENEMY_FLAG2) ? D_SELECTED : 0;
4898 enedata_dlg[256].flags = (guysbuf[index].editorflags&ENEMY_FLAG3) ? D_SELECTED : 0;
4899 enedata_dlg[257].flags = (guysbuf[index].editorflags&ENEMY_FLAG4) ? D_SELECTED : 0;
4900 enedata_dlg[258].flags = (guysbuf[index].editorflags&ENEMY_FLAG5) ? D_SELECTED : 0;
4901 enedata_dlg[259].flags = (guysbuf[index].editorflags&ENEMY_FLAG6) ? D_SELECTED : 0;
4902 enedata_dlg[260].flags = (guysbuf[index].editorflags&ENEMY_FLAG7) ? D_SELECTED : 0;
4903 enedata_dlg[261].flags = (guysbuf[index].editorflags&ENEMY_FLAG8) ? D_SELECTED : 0;
4904 enedata_dlg[262].flags = (guysbuf[index].editorflags&ENEMY_FLAG9) ? D_SELECTED : 0;
4905 enedata_dlg[263].flags = (guysbuf[index].editorflags&ENEMY_FLAG10) ? D_SELECTED : 0;
4906 enedata_dlg[264].flags = (guysbuf[index].editorflags&ENEMY_FLAG11) ? D_SELECTED : 0;
4907 enedata_dlg[265].flags = (guysbuf[index].editorflags&ENEMY_FLAG12) ? D_SELECTED : 0;
4908 enedata_dlg[266].flags = (guysbuf[index].editorflags&ENEMY_FLAG13) ? D_SELECTED : 0;
4909 enedata_dlg[267].flags = (guysbuf[index].editorflags&ENEMY_FLAG14) ? D_SELECTED : 0;
4910 enedata_dlg[268].flags = (guysbuf[index].editorflags&ENEMY_FLAG15) ? D_SELECTED : 0;
4911 enedata_dlg[269].flags = (guysbuf[index].editorflags&ENEMY_FLAG16) ? D_SELECTED : 0;
4912
4913
4914 sprintf(frt,"%d",guysbuf[index].frate);
4915 sprintf(efr,"%d",guysbuf[index].e_frate);
4916 enedata_dlg[140].dp = frt;
4917 enedata_dlg[141].dp = efr;
4918
4919 //sprintf(sfx,"%d",guysbuf[index].bgsfx);
4920 enedata_dlg[182].d1= (int32_t)guysbuf[index].bgsfx;
4921 enedata_dlg[183].d1= (int32_t)guysbuf[index].hitsfx;
4922 if ( ( enedata_dlg[183].d1 == 0 ) && FFCore.getQuestHeaderInfo(vZelda) < 0x250 || (( FFCore.getQuestHeaderInfo(vZelda) == 0x250 ) && FFCore.getQuestHeaderInfo(vBuild) < 32 ) )
4923 {
4924 //If no user-set hit sound was in place, and the quest was made in a version before 2.53.0 Gamma 2:
4925 enedata_dlg[183].d1 = WAV_EHIT; //Fix quests using the wrong hit sound when loading this.
4926 //Force SFX_HIT here.
4927
4928 }
4929 enedata_dlg[184].d1= (int32_t)guysbuf[index].deadsfx;
4930
4931 // Sprites
4932 if(biw_cnt==-1)
4933 {
4934 build_biw_list();
4935 }
4936 for(int32_t j=0; j<biw_cnt; j++)
4937 {
4938 if(biw[j].i == guysbuf[index].wpnsprite)
4939 enedata_dlg[236].d1 = j;
4940 if(biw[j].i == guysbuf[index].spr_shadow)
4941 enedata_dlg[394].d1 = j;
4942 if(biw[j].i == guysbuf[index].spr_death)
4943 enedata_dlg[396].d1 = j;
4944 if(biw[j].i == guysbuf[index].spr_spawn)
4945 enedata_dlg[398].d1 = j;
4946 }
4947
4948 sprintf(bsp,"%d",guysbuf[index].bosspal);
4949
4950 if(guysbuf[index].cset == 14)
4951 {
4952 enedata_dlg[143].flags = D_SELECTED;
4953 }
4954 else
4955 {
4956 enedata_dlg[143].flags = 0;
4957 }
4958
4959 enedata_dlg[53].dp = bsp;
4960
4961 for(int32_t i=0; i<32; i++)
4962 enedata_dlg[74+i].flags = (guysbuf[index].flags & (1<<i)) ? D_SELECTED : 0;
4963
4964 enedata_dlg[186].d1 = (guysbuf[index].flags & guy_fade_instant ? 2
4965 : guysbuf[index].flags & guy_fade_flicker ? 1 : 0);
4966
4967 for(int32_t i=0; i<16; i++)
4968 enedata_dlg[106+i].flags = (guysbuf[index].flags2 & (1<<i)) ? D_SELECTED : 0;
4969
4970 for(int32_t i=0; i<16; i++)
4971 enedata_dlg[399+i].flags = (guysbuf[index].flags2 & (1<<(i+16))) ? D_SELECTED : 0;
4972
4973 enedata_dlg[371].flags = (guysbuf[index].moveflags & move_obeys_grav) ? D_SELECTED : 0;
4974 enedata_dlg[372].flags = (guysbuf[index].moveflags & move_can_pitfall) ? D_SELECTED : 0;
4975 enedata_dlg[373].flags = (guysbuf[index].moveflags & move_can_pitwalk) ? D_SELECTED : 0;
4976 enedata_dlg[374].flags = (guysbuf[index].moveflags & move_can_waterdrown) ? D_SELECTED : 0;
4977 enedata_dlg[375].flags = (guysbuf[index].moveflags & move_can_waterwalk) ? D_SELECTED : 0;
4978 enedata_dlg[417].flags = (guysbuf[index].moveflags & move_only_waterwalk) ? D_SELECTED : 0;
4979 enedata_dlg[418].flags = (guysbuf[index].moveflags & move_only_shallow_waterwalk) ? D_SELECTED : 0;
4980 enedata_dlg[419].flags = (guysbuf[index].moveflags & move_only_pitwalk) ? D_SELECTED : 0;
4981 enedata_dlg[420].flags = (guysbuf[index].moveflags & move_ignore_solidity) ? D_SELECTED : 0;
4982 enedata_dlg[421].flags = (guysbuf[index].moveflags & move_ignore_blockflags) ? D_SELECTED : 0;
4983 enedata_dlg[422].flags = (guysbuf[index].moveflags & move_ignore_screenedge) ? D_SELECTED : 0;
4984 enedata_dlg[423].flags = (guysbuf[index].moveflags & move_new_movement) ? D_SELECTED : 0;
4985 enedata_dlg[424].flags = (guysbuf[index].moveflags & move_not_pushable) ? D_SELECTED : 0;
4986
4987 int32_t ret;
4988 guydata test;
4989 memset(&test, 0, sizeof(guydata));
4990
4991 large_dialog(enedata_dlg);
4992
4993 setEnemyLabels(guysbuf[index].family);
4994 setEnemyScriptLabels(guysbuf[index], npc_initd_labels, weapon_initd_labels);
4995
4996 popup_zqdialog_start();
4997 do
4998 {
4999 for(int32_t i=0; i<10; i++)
5000 {
5001 if(enedata_dlg[64+i].proc==jwin_droplist_proc)
5002 {
5003 int32_t size = 0;
5004 ((ListData*)enedata_dlg[64+i].dp)->listFunc(-1,&size);
5005 // Bound ms[i] as well as enedata_dlg[64+i].d1
5006 sprintf(ms[i],"%d",vbound(atoi(ms[i]), 0, size));
5007 enedata_dlg[64+i].d1 = atoi(ms[i]);
5008 }
5009 else
5010 enedata_dlg[64+i].dp = ms[i];
5011 }
5012 for ( int32_t q = 10; q < 16; q++ )
5013 {
5014 if (enedata_dlg[296+(q-10)].proc == jwin_droplist_proc)
5015 {
5016 int32_t size = 0;
5017 ((ListData*)enedata_dlg[296+(q-10)].dp)->listFunc(-1,&size);
5018 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5019 enedata_dlg[296+(q-10)].d1 = atoi(attribs[q]);
5020 }
5021 else
5022 enedata_dlg[296+(q-10)].dp = attribs[q];
5023 }
5024 for ( int32_t q = 16; q < 24; q++ )
5025 {
5026 if (enedata_dlg[310+(q-16)].proc == jwin_droplist_proc)
5027 {
5028 int32_t size = 0;
5029 ((ListData*)enedata_dlg[310+(q-16)].dp)->listFunc(-1,&size);
5030 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5031 enedata_dlg[310+(q-16)].d1 = atoi(attribs[q]);
5032 }
5033 else
5034 enedata_dlg[310+(q-16)].dp = attribs[q];
5035 }
5036 for ( int32_t q = 24; q < 32; q++ )
5037 {
5038 if (enedata_dlg[326+(q-24)].proc == jwin_droplist_proc)
5039 {
5040 int32_t size = 0;
5041 ((ListData*)enedata_dlg[326+(q-24)].dp)->listFunc(-1,&size);
5042 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5043 enedata_dlg[326+(q-24)].d1 = atoi(attribs[q]);
5044 }
5045 else
5046 enedata_dlg[326+(q-24)].dp = attribs[q];
5047 }
5048
5049 enedata_dlg[189].dp = ms[10]; //These two are unused. Misc 11 and Misc 12 use attribs now
5050 enedata_dlg[190].dp = ms[11];
5051
5052
5053 enedata_dlg[278].dp = attribs[0];
5054 enedata_dlg[279].dp = attribs[1];
5055 enedata_dlg[280].dp = attribs[2];
5056 enedata_dlg[281].dp = attribs[3];
5057 enedata_dlg[282].dp = attribs[4];
5058 enedata_dlg[283].dp = attribs[5];
5059 enedata_dlg[284].dp = attribs[6];
5060 enedata_dlg[285].dp = attribs[7];
5061
5062 enedata_dlg[294].dp = attribs[8];
5063 enedata_dlg[295].dp = attribs[9];
5064 /*
5065 enedata_dlg[296].dp = attribs[10];
5066 enedata_dlg[297].dp = attribs[11];
5067 enedata_dlg[298].dp = attribs[12];
5068 enedata_dlg[299].dp = attribs[13];
5069 enedata_dlg[300].dp = attribs[14];
5070 enedata_dlg[301].dp = attribs[15];
5071
5072 enedata_dlg[310].dp = attribs[16];
5073 enedata_dlg[311].dp = attribs[17];
5074 enedata_dlg[312].dp = attribs[18];
5075 enedata_dlg[313].dp = attribs[19];
5076 enedata_dlg[314].dp = attribs[20];
5077 enedata_dlg[315].dp = attribs[21];
5078 enedata_dlg[316].dp = attribs[22];
5079 enedata_dlg[317].dp = attribs[23];
5080
5081 enedata_dlg[326].dp = attribs[24];
5082 enedata_dlg[327].dp = attribs[25];
5083 enedata_dlg[328].dp = attribs[26];
5084 enedata_dlg[329].dp = attribs[27];
5085 enedata_dlg[330].dp = attribs[28];
5086 enedata_dlg[331].dp = attribs[29];
5087 enedata_dlg[332].dp = attribs[30];
5088 enedata_dlg[333].dp = attribs[31];*/
5089
5090 ret = do_zqdialog(enedata_dlg,3);
5091
5092
5093
5094 test.tile = enedata_dlg[247].d1;
5095 test.cset = enedata_dlg[247].d2;
5096 test.s_tile = enedata_dlg[248].d1;
5097 test.e_tile = enedata_dlg[249].d1;
5098
5099 test.width = vbound(atoi(w),0,20);
5100 test.height = vbound(atoi(h),0,20);
5101 test.s_width = vbound(atoi(sw),0,20);
5102 test.s_height = vbound(atoi(sh),0,20);
5103 test.e_width = vbound(atoi(ew),0,20);
5104 test.e_height = vbound(atoi(eh),0,20);
5105
5106 test.weapon = enedata_dlg[45].d1 != 0 ? biew[enedata_dlg[45].d1].i /*+ wEnemyWeapons*/ : wNone;
5107 test.family = bief[enedata_dlg[46].d1].i;
5108 test.anim = biea[enedata_dlg[47].d1].i;
5109 test.e_anim = biea[enedata_dlg[48].d1].i;
5110 test.item_set = enedata_dlg[49].d1;
5111
5112 test.hp = vbound(atoi(hp), 0, 32767); //0x7FFF, not 0xFFFF?
5113 test.dp = vbound(atoi(dp), 0, 32767);
5114 test.wdp = vbound(atoi(wdp), 0, 32767);
5115 test.grumble = vbound(atoi(grm), -4, 4);
5116
5117 test.rate = vbound(atoi(rat), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5118 test.hrate = vbound(atoi(hrt), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5119 test.homing = vbound(atoi(hom), -256, (test.family == eeFIRE || test.family == eeOTHER)?32767:256);
5120 test.step = vbound(atoi(spd),0, (test.family == eeFIRE || test.family == eeOTHER)?32767:1000);
5121
5122 test.frate = vbound(atoi(frt),0,256);
5123 test.e_frate = vbound(atoi(efr),0,256);
5124 test.bosspal = vbound(atoi(bsp),-1,29);
5125 test.bgsfx = enedata_dlg[182].d1;
5126 test.hitsfx = enedata_dlg[183].d1;
5127 test.deadsfx = enedata_dlg[184].d1;
5128
5129 // Sprites
5130 for(int32_t j=0; j<biw_cnt; j++)
5131 {
5132 if(enedata_dlg[236].d1 == j)
5133 test.wpnsprite = biw[j].i;
5134 if(enedata_dlg[394].d1 == j)
5135 test.spr_shadow = biw[j].i;
5136 if(enedata_dlg[396].d1 == j)
5137 test.spr_death = biw[j].i;
5138 if(enedata_dlg[398].d1 == j)
5139 test.spr_spawn = biw[j].i;
5140 }
5141
5142 test.attributes[0] = (enedata_dlg[64].proc == jwin_droplist_proc) ? enedata_dlg[64].d1 : atol(ms[0]);
5143 test.attributes[1] = (enedata_dlg[65].proc==jwin_droplist_proc) ? enedata_dlg[65].d1 : atol(ms[1]);
5144 test.attributes[2] = (enedata_dlg[66].proc==jwin_droplist_proc) ? enedata_dlg[66].d1 : atol(ms[2]);
5145 test.attributes[3] = (enedata_dlg[67].proc==jwin_droplist_proc) ? enedata_dlg[67].d1 : atol(ms[3]);
5146 test.attributes[4] = (enedata_dlg[68].proc==jwin_droplist_proc) ? enedata_dlg[68].d1 : atol(ms[4]);
5147 test.attributes[5] = (enedata_dlg[69].proc==jwin_droplist_proc) ? enedata_dlg[69].d1 : atol(ms[5]);
5148 test.attributes[6] = (enedata_dlg[70].proc==jwin_droplist_proc) ? enedata_dlg[70].d1 : atol(ms[6]);
5149 test.attributes[7] = (enedata_dlg[71].proc==jwin_droplist_proc) ? enedata_dlg[71].d1 : atol(ms[7]);
5150 test.attributes[8] = (enedata_dlg[72].proc==jwin_droplist_proc) ? enedata_dlg[72].d1 : atol(ms[8]);
5151 test.attributes[9] = (enedata_dlg[73].proc==jwin_droplist_proc) ? enedata_dlg[73].d1 : atol(ms[9]);
5152 test.attributes[10] = (enedata_dlg[296].proc==jwin_droplist_proc) ? enedata_dlg[296].d1 : atol(attribs[10]);
5153 test.attributes[11] = (enedata_dlg[297].proc==jwin_droplist_proc) ? enedata_dlg[297].d1 : atol(attribs[11]);
5154 test.attributes[12] = (enedata_dlg[298].proc==jwin_droplist_proc) ? enedata_dlg[298].d1 : atol(attribs[12]);
5155 test.attributes[13] = (enedata_dlg[299].proc==jwin_droplist_proc) ? enedata_dlg[299].d1 : atol(attribs[13]);
5156 test.attributes[14] = (enedata_dlg[300].proc==jwin_droplist_proc) ? enedata_dlg[300].d1 : atol(attribs[14]);
5157 test.attributes[15] = (enedata_dlg[301].proc==jwin_droplist_proc) ? enedata_dlg[301].d1 : atol(attribs[15]);
5158 test.attributes[16] = (enedata_dlg[310].proc==jwin_droplist_proc) ? enedata_dlg[310].d1 : atol(attribs[16]);
5159 test.attributes[17] = (enedata_dlg[311].proc==jwin_droplist_proc) ? enedata_dlg[311].d1 : atol(attribs[17]);
5160 test.attributes[18] = (enedata_dlg[312].proc==jwin_droplist_proc) ? enedata_dlg[312].d1 : atol(attribs[18]);
5161 test.attributes[19] = (enedata_dlg[313].proc==jwin_droplist_proc) ? enedata_dlg[313].d1 : atol(attribs[19]);
5162 test.attributes[20] = (enedata_dlg[314].proc==jwin_droplist_proc) ? enedata_dlg[314].d1 : atol(attribs[20]);
5163 test.attributes[21] = (enedata_dlg[315].proc==jwin_droplist_proc) ? enedata_dlg[315].d1 : atol(attribs[21]);
5164 test.attributes[22] = (enedata_dlg[316].proc==jwin_droplist_proc) ? enedata_dlg[316].d1 : atol(attribs[22]);
5165 test.attributes[23] = (enedata_dlg[317].proc==jwin_droplist_proc) ? enedata_dlg[317].d1 : atol(attribs[23]);
5166 test.attributes[24] = (enedata_dlg[326].proc==jwin_droplist_proc) ? enedata_dlg[326].d1 : atol(attribs[24]);
5167 test.attributes[25] = (enedata_dlg[327].proc==jwin_droplist_proc) ? enedata_dlg[327].d1 : atol(attribs[25]);
5168 test.attributes[26] = (enedata_dlg[328].proc==jwin_droplist_proc) ? enedata_dlg[328].d1 : atol(attribs[26]);
5169 test.attributes[27] = (enedata_dlg[329].proc==jwin_droplist_proc) ? enedata_dlg[329].d1 : atol(attribs[27]);
5170 test.attributes[28] = (enedata_dlg[330].proc==jwin_droplist_proc) ? enedata_dlg[330].d1 : atol(attribs[28]);
5171 test.attributes[29] = (enedata_dlg[331].proc==jwin_droplist_proc) ? enedata_dlg[331].d1 : atol(attribs[29]);
5172 test.attributes[30] = (enedata_dlg[332].proc==jwin_droplist_proc) ? enedata_dlg[332].d1 : atol(attribs[30]);
5173 test.attributes[31] = (enedata_dlg[333].proc==jwin_droplist_proc) ? enedata_dlg[333].d1 : atol(attribs[31]);
5174
5175
5176
5177 for(int32_t j=0; j <= edefBYRNA; j++)
5178 {
5179 test.defense[j] = enedata_dlg[j+161].d1;
5180 }
5181
5182 test.defense[edefWhistle] = enedata_dlg[192].d1;
5183 test.defense[edefSwitchHook] = enedata_dlg[416].d1;
5184 //Are the new defs missing here? -Z
5185
5186
5187 for(int32_t i=0; i<32; i++)
5188 test.flags |= (guy_flags)((enedata_dlg[74+i].flags & D_SELECTED) ? (1<<i) : 0);
5189
5190 test.flags &= ~(guy_fade_instant|guy_fade_flicker);
5191 test.flags |= (guy_flags)(enedata_dlg[186].d1==2 ? guy_fade_instant : enedata_dlg[186].d1==1 ? guy_fade_flicker : 0);
5192
5193 for(int32_t i=0; i<16; i++)
5194 test.flags2 |= (guy_flags2)((enedata_dlg[106+i].flags & D_SELECTED) ? (1<<i) : 0);
5195
5196 for(int32_t i=0; i<16; i++)
5197 test.flags2 |= (guy_flags2)((enedata_dlg[399+i].flags & D_SELECTED) ? (1<<(i+16)) : 0);
5198
5199 if(enedata_dlg[143].flags & D_SELECTED)
5200 {
5201 test.cset = 14;
5202 }
5203 //if we disable the box, revert to cset 8 -Z.
5204 else if(guysbuf[index].cset == 14 || test.cset == 14)
5205 {
5206 test.cset = 8;
5207 }
5208 test.defense[edefSCRIPT01] = enedata_dlg[203].d1;
5209 test.defense[edefSCRIPT02] = enedata_dlg[204].d1;
5210 test.defense[edefSCRIPT03] = enedata_dlg[205].d1;
5211 test.defense[edefSCRIPT04] = enedata_dlg[206].d1;
5212 test.defense[edefSCRIPT05] = enedata_dlg[207].d1;
5213 test.defense[edefSCRIPT06] = enedata_dlg[208].d1;
5214 test.defense[edefSCRIPT07] = enedata_dlg[209].d1;
5215 test.defense[edefSCRIPT08] = enedata_dlg[210].d1;
5216 test.defense[edefSCRIPT09] = enedata_dlg[211].d1;
5217 test.defense[edefSCRIPT10] = enedata_dlg[212].d1;
5218
5219 //tilewidth, tileheight, hitwidth, hitheight,
5220 test.txsz = atoi(tilex);
5221 test.tysz = atoi(tiley);
5222 test.hxsz = atoi(hitx);
5223 test.hysz = atoi(hity);
5224 test.hzsz = atoi(hitz);
5225 test.hxofs = atoi(hitofsx);
5226 test.hyofs = atoi(hitofsy);
5227 test.zofs = atoi(hitofsz);
5228 test.xofs = atoi(drawofsx);
5229 test.yofs = atoi(drawofsy); //This seems to be setting to +48 or something with any value set?! -Z
5230
5231 //override flags
5232 if(enedata_dlg[237].flags & D_SELECTED)
5233 test.SIZEflags |= guyflagOVERRIDE_HIT_WIDTH;
5234
5235 if(enedata_dlg[238].flags & D_SELECTED)
5236 test.SIZEflags |= guyflagOVERRIDE_HIT_HEIGHT;
5237
5238 if(enedata_dlg[239].flags & D_SELECTED)
5239 test.SIZEflags |= guyflagOVERRIDE_HIT_Z_HEIGHT;
5240
5241 if(enedata_dlg[240].flags & D_SELECTED)
5242 test.SIZEflags |= guyflagOVERRIDE_HIT_X_OFFSET;
5243
5244 if(enedata_dlg[241].flags & D_SELECTED)
5245 test.SIZEflags |= guyflagOVERRIDE_HIT_Y_OFFSET;
5246
5247 if(enedata_dlg[242].flags & D_SELECTED)
5248 test.SIZEflags |= guyflagOVERRIDE_DRAW_Z_OFFSET;
5249 if(enedata_dlg[243].flags & D_SELECTED)
5250 test.SIZEflags |= guyflagOVERRIDE_DRAW_X_OFFSET;
5251
5252 if(enedata_dlg[244].flags & D_SELECTED)
5253 test.SIZEflags |= guyflagOVERRIDE_DRAW_Y_OFFSET;
5254 if(enedata_dlg[245].flags & D_SELECTED)
5255 test.SIZEflags |= guyflagOVERRIDE_TILE_WIDTH;
5256 if(enedata_dlg[246].flags & D_SELECTED)
5257 test.SIZEflags |= guyflagOVERRIDE_TILE_HEIGHT;
5258
5259 //new 2.55 misc flags 1 to 16
5260 if(enedata_dlg[254].flags & D_SELECTED)
5261 test.editorflags |= ENEMY_FLAG1;
5262 if(enedata_dlg[255].flags & D_SELECTED)
5263 test.editorflags |= ENEMY_FLAG2;
5264 if(enedata_dlg[256].flags & D_SELECTED)
5265 test.editorflags |= ENEMY_FLAG3;
5266 if(enedata_dlg[257].flags & D_SELECTED)
5267 test.editorflags |= ENEMY_FLAG4;
5268 if(enedata_dlg[258].flags & D_SELECTED)
5269 test.editorflags |= ENEMY_FLAG5;
5270 if(enedata_dlg[259].flags & D_SELECTED)
5271 test.editorflags |= ENEMY_FLAG6;
5272 if(enedata_dlg[260].flags & D_SELECTED)
5273 test.editorflags |= ENEMY_FLAG7;
5274 if(enedata_dlg[261].flags & D_SELECTED)
5275 test.editorflags |= ENEMY_FLAG8;
5276 if(enedata_dlg[262].flags & D_SELECTED)
5277 test.editorflags |= ENEMY_FLAG9;
5278 if(enedata_dlg[263].flags & D_SELECTED)
5279 test.editorflags |= ENEMY_FLAG10;
5280 if(enedata_dlg[264].flags & D_SELECTED)
5281 test.editorflags |= ENEMY_FLAG11;
5282 if(enedata_dlg[265].flags & D_SELECTED)
5283 test.editorflags |= ENEMY_FLAG12;
5284 if(enedata_dlg[266].flags & D_SELECTED)
5285 test.editorflags |= ENEMY_FLAG13;
5286 if(enedata_dlg[267].flags & D_SELECTED)
5287 test.editorflags |= ENEMY_FLAG14;
5288 if(enedata_dlg[268].flags & D_SELECTED)
5289 test.editorflags |= ENEMY_FLAG15;
5290 if(enedata_dlg[269].flags & D_SELECTED)
5291 test.editorflags |= ENEMY_FLAG16;
5292
5293 //begin npc scripts
5294 test.script = binpcs[enedata_dlg[335].d1].second + 1;
5295 for ( int32_t q = 0; q < 8; q++ )
5296 {
5297 test.initD[q] = enedata_dlg[345+q].fg;
5298 test.weap_initiald[q] = enedata_dlg[361+q].fg;
5299 }
5300 //eweapon script
5301 test.weaponscript = bieweapons[enedata_dlg[370].d1].second + 1;
5302
5303 test.moveflags = move_none;
5304 if(enedata_dlg[371].flags & D_SELECTED)
5305 test.moveflags |= move_obeys_grav;
5306 if(enedata_dlg[372].flags & D_SELECTED)
5307 test.moveflags |= move_can_pitfall;
5308 if(enedata_dlg[373].flags & D_SELECTED)
5309 test.moveflags |= move_can_pitwalk;
5310 if(enedata_dlg[374].flags & D_SELECTED)
5311 test.moveflags |= move_can_waterdrown;
5312 if(enedata_dlg[375].flags & D_SELECTED)
5313 test.moveflags |= move_can_waterwalk;
5314 if(enedata_dlg[417].flags & D_SELECTED)
5315 test.moveflags |= move_only_waterwalk;
5316 if(enedata_dlg[418].flags & D_SELECTED)
5317 test.moveflags |= move_only_shallow_waterwalk;
5318 if(enedata_dlg[419].flags & D_SELECTED)
5319 test.moveflags |= move_only_pitwalk;
5320 if(enedata_dlg[420].flags & D_SELECTED)
5321 test.moveflags |= move_ignore_solidity;
5322 if(enedata_dlg[421].flags & D_SELECTED)
5323 test.moveflags |= move_ignore_blockflags;
5324 if(enedata_dlg[422].flags & D_SELECTED)
5325 test.moveflags |= move_ignore_screenedge;
5326 if(enedata_dlg[423].flags & D_SELECTED)
5327 test.moveflags |= move_new_movement;
5328 if(enedata_dlg[424].flags & D_SELECTED)
5329 test.moveflags |= move_not_pushable;
5330
5331 //end npc scripts
5332
5333 if(ret==252) //OK Button
5334 {
5335 strcpy(guy_string[index],name);
5336 guysbuf[index] = test;
5337 saved = false;
5338 }
5339 else if(ret==46)
5340 {
5341 setEnemyLabels(bief[enedata_dlg[46].d1].i);
5342 }
5343 else if(ret==178)
5344 {
5345 for(int32_t j=1; j <= edefBYRNA; j++)
5346 {
5347 enedata_dlg[j+161].d1 = enedata_dlg[161].d1;
5348 }
5349
5350 enedata_dlg[192].d1 = enedata_dlg[161].d1;
5351 //Clear to 0
5352 enedata_dlg[203].d1 = enedata_dlg[161].d1;
5353 enedata_dlg[204].d1 = enedata_dlg[161].d1;
5354 enedata_dlg[205].d1 = enedata_dlg[161].d1;
5355 enedata_dlg[206].d1 = enedata_dlg[161].d1;
5356 enedata_dlg[207].d1 = enedata_dlg[161].d1;
5357 enedata_dlg[208].d1 = enedata_dlg[161].d1;
5358 enedata_dlg[209].d1 = enedata_dlg[161].d1;
5359 enedata_dlg[210].d1 = enedata_dlg[161].d1;
5360 enedata_dlg[211].d1 = enedata_dlg[161].d1;
5361 enedata_dlg[212].d1 = enedata_dlg[161].d1;
5362 }
5363 else if (ret == 335 || ret == 370) // Script dropdowns
5364 {
5365 setEnemyScriptLabels(test, npc_initd_labels, weapon_initd_labels);
5366 }
5367 else if (ret >= 426 && ret <= 441) // InitD help buttons
5368 {
5369 showEnemyScriptMetaHelp(test, ret - 426);
5370 }
5371 }
5372 //252 == OK button, 253 == Cancel Button
5373 while(ret != 252 && ret != 253 && ret != 0);
5374 popup_zqdialog_end();
5375 }
5376
5377 extern DIALOG elist_dlg[];
5378 static int32_t copiedGuy;
5379
5380 int32_t readonenpc(PACKFILE *f, int32_t index)
5381 {
5382 dword section_version = 0;
5383 dword section_cversion = 0;
5384 int32_t zversion = 0;
5385 int32_t zbuild = 0;
5386 guydata tempguy;
5387 memset(&tempguy, 0, sizeof(guydata));
5388 //reset_itembuf(&tempitem,i);
5389
5390
5391 char npcstring[64]={0}; //guy_string[]
5392 //section version info
5393 if(!p_igetl(&zversion,f))
5394 {
5395 return 0;
5396 }
5397 if(!p_igetl(&zbuild,f))
5398 {
5399 return 0;
5400 }
5401
5402 if(!p_igetw(&section_version,f))
5403 {
5404 return 0;
5405 }
5406
5407 if(!p_igetw(&section_cversion,f))
5408 {
5409 return 0;
5410 }
5411 al_trace("readonenpc section_version: %d\n", section_version);
5412 al_trace("readonenpc section_cversion: %d\n", section_cversion);
5413
5414 if ( zversion > ZELDA_VERSION )
5415 {
5416 al_trace("Cannot read .znpc packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
5417 return 0;
5418 }
5419 else if ( ( section_version > V_GUYS ) || ( section_version == V_GUYS && section_cversion < CV_GUYS ) )
5420 {
5421 al_trace("Cannot read .znpc packfile made using V_GUYS (%d) subversion (%d)\n", section_version, section_cversion);
5422 return 0;
5423
5424 }
5425 else
5426 {
5427 al_trace("Reading a .znpc packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
5428 }
5429
5430 if(!pfread(&npcstring, 64, f))
5431 {
5432 return 0;
5433 }
5434
5435 //section data
5436 if(!p_igetl(&tempguy.flags,f))
5437 {
5438 return 0;
5439 }
5440
5441 if(!p_igetl(&tempguy.flags2,f))
5442 {
5443 return 0;
5444 }
5445
5446 if(!p_igetl(&tempguy.tile,f))
5447 {
5448 return 0;
5449 }
5450
5451 if(!p_getc(&tempguy.width,f))
5452 {
5453 return 0;
5454 }
5455
5456 if(!p_getc(&tempguy.height,f))
5457 {
5458 return 0;
5459 }
5460
5461 if(!p_igetl(&tempguy.s_tile,f))
5462 {
5463 return 0;
5464 }
5465
5466 if(!p_getc(&tempguy.s_width,f))
5467 {
5468 return 0;
5469 }
5470
5471 if(!p_getc(&tempguy.s_height,f))
5472 {
5473 return 0;
5474 }
5475
5476 if(!p_igetl(&tempguy.e_tile,f))
5477 {
5478 return 0;
5479 }
5480
5481 if(!p_getc(&tempguy.e_width,f))
5482 {
5483 return 0;
5484 }
5485
5486 if(!p_getc(&tempguy.e_height,f))
5487 {
5488 return 0;
5489 }
5490
5491 if(!p_igetw(&tempguy.hp,f))
5492 {
5493 return 0;
5494 }
5495
5496 if(!p_igetw(&tempguy.family,f))
5497 {
5498 return 0;
5499 }
5500
5501 if(!p_igetw(&tempguy.cset,f))
5502 {
5503 return 0;
5504 }
5505
5506 if(!p_igetw(&tempguy.anim,f))
5507 {
5508 return 0;
5509 }
5510
5511 if(!p_igetw(&tempguy.e_anim,f))
5512 {
5513 return 0;
5514 }
5515
5516 if(!p_igetw(&tempguy.frate,f))
5517 {
5518 return 0;
5519 }
5520
5521 if(!p_igetw(&tempguy.e_frate,f))
5522 {
5523 return 0;
5524 }
5525
5526 if(!p_igetw(&tempguy.dp,f))
5527 {
5528 return 0;
5529 }
5530
5531 if(!p_igetw(&tempguy.wdp,f))
5532 {
5533 return 0;
5534 }
5535
5536 if(!p_igetw(&tempguy.weapon,f))
5537 {
5538 return 0;
5539 }
5540
5541 if(!p_igetw(&tempguy.rate,f))
5542 {
5543 return 0;
5544 }
5545
5546 if(!p_igetw(&tempguy.hrate,f))
5547 {
5548 return 0;
5549 }
5550
5551 if(!p_igetw(&tempguy.step,f))
5552 {
5553 return 0;
5554 }
5555
5556 if(!p_igetw(&tempguy.homing,f))
5557 {
5558 return 0;
5559 }
5560
5561 if(!p_igetw(&tempguy.grumble,f))
5562 {
5563 return 0;
5564 }
5565
5566 if(!p_igetw(&tempguy.item_set,f))
5567 {
5568 return 0;
5569 }
5570
5571 if(!p_igetw(&tempguy.bgsfx,f))
5572 {
5573 return 0;
5574 }
5575
5576 if(!p_igetw(&tempguy.bosspal,f))
5577 {
5578 return 0;
5579 }
5580
5581 if(!p_igetw(&tempguy.extend,f))
5582 {
5583 return 0;
5584 }
5585
5586 for(int32_t j=0; j < edefLAST; j++)
5587 {
5588 if(!p_getc(&tempguy.defense[j],f))
5589 {
5590 return 0;
5591 }
5592 }
5593
5594 if(!p_getc(&tempguy.hitsfx,f))
5595 {
5596 return 0;
5597 }
5598
5599 if(!p_getc(&tempguy.deadsfx,f))
5600 {
5601 return 0;
5602 }
5603
5604 if(!p_igetl(&tempguy.attributes[10],f))
5605 {
5606 return 0;
5607 }
5608
5609 if(!p_igetl(&tempguy.attributes[11],f))
5610 {
5611 return 0;
5612 }
5613
5614
5615 if ( zversion >= 0x255 )
5616 {
5617 if ( section_version >= 41 )
5618 {
5619 //New itemdata vars -Z
5620 //! version 27
5621
5622 //2.55 starts here
5623 for(int32_t j=edefLAST; j < edefLAST255; j++)
5624 {
5625 if(!p_getc(&tempguy.defense[j],f))
5626 {
5627 return 0;
5628 }
5629 }
5630
5631 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5632 if(!p_igetl(&tempguy.txsz,f))
5633 {
5634 return 0;
5635 }
5636 if(!p_igetl(&tempguy.tysz,f))
5637 {
5638 return 0;
5639 }
5640 if(!p_igetl(&tempguy.hxsz,f))
5641 {
5642 return 0;
5643 }
5644 if(!p_igetl(&tempguy.hysz,f))
5645 {
5646 return 0;
5647 }
5648 if(!p_igetl(&tempguy.hzsz,f))
5649 {
5650 return 0;
5651 }
5652 // These are not fixed types, but ints, so they are safe to use here.
5653 if(!p_igetl(&tempguy.hxofs,f))
5654 {
5655 return 0;
5656 }
5657 if(!p_igetl(&tempguy.hyofs,f))
5658 {
5659 return 0;
5660 }
5661 if(!p_igetl(&tempguy.xofs,f))
5662 {
5663 return 0;
5664 }
5665 if(!p_igetl(&tempguy.yofs,f))
5666 {
5667 return 0;
5668 }
5669 if(!p_igetl(&tempguy.zofs,f))
5670 {
5671 return 0;
5672 }
5673 if(!p_igetl(&tempguy.wpnsprite,f))
5674 {
5675 return 0;
5676 }
5677 if(!p_igetl(&tempguy.SIZEflags,f))
5678 {
5679 return 0;
5680 }
5681 if(!p_igetl(&tempguy.frozentile,f))
5682 {
5683 return 0;
5684 }
5685 if(!p_igetl(&tempguy.frozencset,f))
5686 {
5687 return 0;
5688 }
5689 if(!p_igetl(&tempguy.frozenclock,f))
5690 {
5691 return 0;
5692 }
5693
5694 for ( int32_t q = 0; q < 10; q++ )
5695 {
5696 if(!p_igetw(&tempguy.frozenmisc[q],f))
5697 {
5698 return 0;
5699 }
5700 }
5701 if(!p_igetw(&tempguy.firesfx,f))
5702 {
5703 return 0;
5704 }
5705 for (int32_t q = 0; q < 32; q++)
5706 {
5707 if(!p_igetl(&tempguy.movement[q],f))
5708 {
5709 return 0;
5710 }
5711 }
5712 for ( int32_t q = 0; q < 32; q++ )
5713 {
5714 if(!p_igetl(&tempguy.new_weapon[q],f))
5715 {
5716 return 0;
5717 }
5718 }
5719 if(!p_igetw(&tempguy.script,f))
5720 {
5721 return 0;
5722 }
5723 for ( int32_t q = 0; q < 8; q++ )
5724 {
5725 if(!p_igetl(&tempguy.initD[q],f))
5726 {
5727 return 0;
5728 }
5729 }
5730 for ( int32_t q = 0; q < 2; q++ )
5731 {
5732 if(!p_igetl(&tempguy.initA[q],f))
5733 {
5734 return 0;
5735 }
5736 }
5737 if(!p_igetl(&tempguy.editorflags,f))
5738 {
5739 return 0;
5740 }
5741
5742 //Enemy Editor InitD[] labels
5743 for ( int32_t q = 0; q < 8; q++ )
5744 {
5745 for ( int32_t w = 0; w < 65; w++ )
5746 {
5747 if(!p_getc(&tempguy.initD_label[q][w],f))
5748 {
5749 return 0;
5750 }
5751 }
5752 for ( int32_t w = 0; w < 65; w++ )
5753 {
5754 if(!p_getc(&tempguy.weapon_initD_label[q][w],f))
5755 {
5756 return 0;
5757 }
5758 }
5759 }
5760 if(!p_igetw(&tempguy.weaponscript,f))
5761 {
5762 return 0;
5763 }
5764 //eweapon initD
5765 for ( int32_t q = 0; q < 8; q++ )
5766 {
5767 if(!p_igetl(&tempguy.weap_initiald[q],f))
5768 {
5769 return 0;
5770 }
5771 }
5772 //enemy editor misc merge
5773 for (int32_t q = 0; q < 32; q++)
5774 {
5775 if (!p_igetl(&tempguy.attributes[q], f)) return 0;
5776 }
5777 }
5778 }
5779 memcpy(&guysbuf[index], &tempguy, sizeof(guydata));
5780 //strcpy(item_string[index], istring);
5781 guysbuf[bie[index].i] = tempguy;
5782 strcpy(guy_string[bie[index].i], npcstring);
5783
5784 return 1;
5785 }
5786
5787 int32_t writeonenpc(PACKFILE *f, int32_t i)
5788 {
5789
5790 dword section_version=V_GUYS;
5791 dword section_cversion=CV_GUYS;
5792 int32_t zversion = ZELDA_VERSION;
5793 int32_t zbuild = VERSION_BUILD;
5794
5795
5796 //section version info
5797 if(!p_iputl(zversion,f))
5798 {
5799 return 0;
5800 }
5801 if(!p_iputl(zbuild,f))
5802 {
5803 return 0;
5804 }
5805 if(!p_iputw(section_version,f))
5806 {
5807 new_return(2);
5808 }
5809
5810 if(!p_iputw(section_cversion,f))
5811 {
5812 new_return(3);
5813 }
5814
5815 if(!pfwrite(guy_string[i], 64, f))
5816 {
5817 new_return(5);
5818 }
5819
5820 if(!p_iputl(guysbuf[i].flags,f))
5821 {
5822 return 0;
5823 }
5824
5825 if(!p_iputl(guysbuf[i].flags2,f))
5826 {
5827 return 0;
5828 }
5829
5830 if(!p_iputl(guysbuf[i].tile,f))
5831 {
5832 return 0;
5833 }
5834
5835 if(!p_putc(guysbuf[i].width,f))
5836 {
5837 return 0;
5838 }
5839
5840 if(!p_putc(guysbuf[i].height,f))
5841 {
5842 return 0;
5843 }
5844
5845 if(!p_iputl(guysbuf[i].s_tile,f))
5846 {
5847 return 0;
5848 }
5849
5850 if(!p_putc(guysbuf[i].s_width,f))
5851 {
5852 return 0;
5853 }
5854
5855 if(!p_putc(guysbuf[i].s_height,f))
5856 {
5857 return 0;
5858 }
5859
5860 if(!p_iputl(guysbuf[i].e_tile,f))
5861 {
5862 return 0;
5863 }
5864
5865 if(!p_putc(guysbuf[i].e_width,f))
5866 {
5867 return 0;
5868 }
5869
5870 if(!p_putc(guysbuf[i].e_height,f))
5871 {
5872 return 0;
5873 }
5874
5875 if(!p_iputw(guysbuf[i].hp,f))
5876 {
5877 return 0;
5878 }
5879
5880 if(!p_iputw(guysbuf[i].family,f))
5881 {
5882 return 0;
5883 }
5884
5885 if(!p_iputw(guysbuf[i].cset,f))
5886 {
5887 return 0;
5888 }
5889
5890 if(!p_iputw(guysbuf[i].anim,f))
5891 {
5892 return 0;
5893 }
5894
5895 if(!p_iputw(guysbuf[i].e_anim,f))
5896 {
5897 return 0;
5898 }
5899
5900 if(!p_iputw(guysbuf[i].frate,f))
5901 {
5902 return 0;
5903 }
5904
5905 if(!p_iputw(guysbuf[i].e_frate,f))
5906 {
5907 return 0;
5908 }
5909
5910 if(!p_iputw(guysbuf[i].dp,f))
5911 {
5912 return 0;
5913 }
5914
5915 if(!p_iputw(guysbuf[i].wdp,f))
5916 {
5917 return 0;
5918 }
5919
5920 if(!p_iputw(guysbuf[i].weapon,f))
5921 {
5922 return 0;
5923 }
5924
5925 if(!p_iputw(guysbuf[i].rate,f))
5926 {
5927 return 0;
5928 }
5929
5930 if(!p_iputw(guysbuf[i].hrate,f))
5931 {
5932 return 0;
5933 }
5934
5935 if(!p_iputw(guysbuf[i].step,f))
5936 {
5937 return 0;
5938 }
5939
5940 if(!p_iputw(guysbuf[i].homing,f))
5941 {
5942 return 0;
5943 }
5944
5945 if(!p_iputw(guysbuf[i].grumble,f))
5946 {
5947 return 0;
5948 }
5949
5950 if(!p_iputw(guysbuf[i].item_set,f))
5951 {
5952 return 0;
5953 }
5954
5955 if(!p_iputw(guysbuf[i].bgsfx,f))
5956 {
5957 return 0;
5958 }
5959
5960 if(!p_iputw(guysbuf[i].bosspal,f))
5961 {
5962 return 0;
5963 }
5964
5965 if(!p_iputw(guysbuf[i].extend,f))
5966 {
5967 return 0;
5968 }
5969
5970 for(int32_t j=0; j < edefLAST; j++)
5971 {
5972 if(!p_putc(guysbuf[i].defense[j],f))
5973 {
5974 return 0;
5975 }
5976 }
5977
5978 if(!p_putc(guysbuf[i].hitsfx,f))
5979 {
5980 return 0;
5981 }
5982
5983 if(!p_putc(guysbuf[i].deadsfx,f))
5984 {
5985 return 0;
5986 }
5987
5988 //2.55 starts here
5989 for(int32_t j=edefLAST; j < edefLAST255; j++)
5990 {
5991 if(!p_putc(guysbuf[i].defense[j],f))
5992 {
5993 return 0;
5994 }
5995 }
5996
5997 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5998 if(!p_iputl(guysbuf[i].txsz,f))
5999 {
6000 return 0;
6001 }
6002 if(!p_iputl(guysbuf[i].tysz,f))
6003 {
6004 return 0;
6005 }
6006 if(!p_iputl(guysbuf[i].hxsz,f))
6007 {
6008 return 0;
6009 }
6010 if(!p_iputl(guysbuf[i].hysz,f))
6011 {
6012 return 0;
6013 }
6014 if(!p_iputl(guysbuf[i].hzsz,f))
6015 {
6016 return 0;
6017 }
6018 // These are not fixed types, but ints, so they are safe to use here.
6019 if(!p_iputl(guysbuf[i].hxofs,f))
6020 {
6021 return 0;
6022 }
6023 if(!p_iputl(guysbuf[i].hyofs,f))
6024 {
6025 return 0;
6026 }
6027 if(!p_iputl(guysbuf[i].xofs,f))
6028 {
6029 return 0;
6030 }
6031 if(!p_iputl(guysbuf[i].yofs,f))
6032 {
6033 return 0;
6034 }
6035 if(!p_iputl(guysbuf[i].zofs,f))
6036 {
6037 return 0;
6038 }
6039 if(!p_iputl(guysbuf[i].wpnsprite,f))
6040 {
6041 return 0;
6042 }
6043 if(!p_iputl(guysbuf[i].SIZEflags,f))
6044 {
6045 return 0;
6046 }
6047 if(!p_iputl(guysbuf[i].frozentile,f))
6048 {
6049 return 0;
6050 }
6051 if(!p_iputl(guysbuf[i].frozencset,f))
6052 {
6053 return 0;
6054 }
6055 if(!p_iputl(guysbuf[i].frozenclock,f))
6056 {
6057 return 0;
6058 }
6059
6060 for ( int32_t q = 0; q < 10; q++ )
6061 {
6062 if(!p_iputw(guysbuf[i].frozenmisc[q],f))
6063 {
6064 return 0;
6065 }
6066 }
6067 if(!p_iputw(guysbuf[i].firesfx,f))
6068 {
6069 return 0;
6070 }
6071 for ( int32_t q = 0; q < 32; q++ )
6072 {
6073 if(!p_iputl(guysbuf[i].movement[q],f))
6074 {
6075 return 0;
6076 }
6077 }
6078 for ( int32_t q = 0; q < 32; q++ )
6079 {
6080 if(!p_iputl(guysbuf[i].new_weapon[q],f))
6081 {
6082 return 0;
6083 }
6084 }
6085 if(!p_iputw(guysbuf[i].script,f))
6086 {
6087 return 0;
6088 }
6089 for ( int32_t q = 0; q < 8; q++ )
6090 {
6091 if(!p_iputl(guysbuf[i].initD[q],f))
6092 {
6093 return 0;
6094 }
6095 }
6096 for ( int32_t q = 0; q < 2; q++ )
6097 {
6098 if(!p_iputl(guysbuf[i].initA[q],f))
6099 {
6100 return 0;
6101 }
6102 }
6103 if(!p_iputl(guysbuf[i].editorflags,f))
6104 {
6105 return 0;
6106 }
6107
6108 //Enemy Editor InitD[] labels
6109 for ( int32_t q = 0; q < 8; q++ )
6110 {
6111 for ( int32_t w = 0; w < 65; w++ )
6112 {
6113 if(!p_putc(guysbuf[i].initD_label[q][w],f))
6114 {
6115 return 0;
6116 }
6117 }
6118 for ( int32_t w = 0; w < 65; w++ )
6119 {
6120 if(!p_putc(guysbuf[i].weapon_initD_label[q][w],f))
6121 {
6122 return 0;
6123 }
6124 }
6125 }
6126 if(!p_iputw(guysbuf[i].weaponscript,f))
6127 {
6128 return 0;
6129 }
6130 //eweapon initD
6131 for ( int32_t q = 0; q < 8; q++ )
6132 {
6133 if(!p_iputl(guysbuf[i].weap_initiald[q],f))
6134 {
6135 return 0;
6136 }
6137 }
6138 //enemy editor misc merge
6139 for (int32_t q = 0; q < 32; q++)
6140 {
6141 if (!p_iputl(guysbuf[i].attributes[q], f))
6142 {
6143 return 0;
6144 }
6145 }
6146 return 1;
6147 }
6148
6149
6150
6151
6152
6153
6154 void paste_enemy(int32_t index)
6155 {
6156 if(index < 0) index = elist_dlg[2].d1;
6157 if(index==0)
6158 return;
6159 if(copiedGuy<0) //Nothing copied
6160 return;
6161 guysbuf[bie[index].i]=guysbuf[copiedGuy];
6162 elist_dlg[2].flags|=D_DIRTY;
6163 saved=false;
6164 }
6165 void copy_enemy(int32_t index)
6166 {
6167 if(index < 0) index = elist_dlg[2].d1;
6168 if(index==0)
6169 return;
6170 copiedGuy=bie[index].i;
6171 }
6172 void save_enemy(int32_t index)
6173 {
6174 if(index < 0) index = elist_dlg[2].d1;
6175 if(index==0)
6176 return;
6177 if(!prompt_for_new_file_compat("Save NPC(.znpc)", "znpc", NULL,datapath,false))
6178 return;
6179 int32_t iid = bie[index].i;
6180
6181 PACKFILE *f=pack_fopen_password(temppath,F_WRITE, "");
6182 if(!f) return;
6183 if (!writeonenpc(f,iid))
6184 {
6185 Z_error("Could not write to .znpc packfile %s\n", temppath);
6186 InfoDialog("ZNPC Error", "Could not save the specified enemy.").show();
6187 }
6188 pack_fclose(f);
6189 }
6190 void load_enemy(int32_t index)
6191 {
6192 if(index < 0) index = elist_dlg[2].d1;
6193 if(index==0)
6194 return;
6195 if(!prompt_for_existing_file_compat("Load NPC(.znpc)", "znpc", NULL,datapath,false))
6196 return;
6197 PACKFILE *f=pack_fopen_password(temppath,F_READ, "");
6198 if(!f) return;
6199
6200 if (!readonenpc(f,index))
6201 {
6202 al_trace("Could not read from .znpc packfile %s\n", temppath);
6203 InfoDialog("ZNPC Error", "Could not load the specified enemy.").show();
6204 }
6205
6206 pack_fclose(f);
6207 elist_dlg[2].flags|=D_DIRTY;
6208 saved=false;
6209 }
6210
6211
6212 void elist_rclick_func(int32_t index, int32_t x, int32_t y)
6213 {
6214 if(index == 0)
6215 return;
6216
6217 NewMenu rcmenu {
6218 { "&Copy", [&](){copy_enemy(index);} },
6219 { "Paste", "&v", [&](){paste_enemy(index);}, 0, copiedGuy <= 0 },
6220 { "&Save", [&](){save_enemy(index);} },
6221 { "&Load", [&](){load_enemy(index);} },
6222 };
6223 rcmenu.pop(x, y);
6224 }
6225
6226 int32_t onCustomEnemies()
6227 {
6228 /*
6229 char *hold = item_string[0];
6230 item_string[0] = "rupee (1)";
6231 */
6232
6233 int32_t foo;
6234 int32_t index = select_enemy("Select Enemy",bie[0].i,true,true,foo);
6235
6236 while(index >= 0)
6237 {
6238 //I can't get the fucking dialog to handle a simple copy paste so I stuck it here else I'm going to rage kill something.
6239 //,,.Someone feel free to fix the thing properly later on.
6240 //Right now creating custom enemies remains a int32_t painful process, but it shouldn't be this hard for users to use.
6241 //-Two cents worth. -Gleeok
6242 if(key[KEY_OPENBRACE]) //copy
6243 {
6244 if(index != 0)
6245 copiedGuy=index;
6246 }
6247 else if(key[KEY_CLOSEBRACE]) //paste
6248 {
6249 if(copiedGuy>0 && index!=0)
6250 {
6251 guysbuf[index]=guysbuf[copiedGuy];
6252 saved=false;
6253 }
6254 }
6255 else
6256 {
6257 if(index != 0)
6258 {
6259 edit_enemydata(index);
6260 }
6261 }
6262
6263 index = select_enemy("Select Enemy",index,true,true,foo);
6264 }
6265
6266 refresh(rMAP+rCOMBOS);
6267 return D_O_K;
6268 }
6269
6270
6271 int32_t onCustomGuys()
6272 {
6273 return D_O_K;
6274 }
6275
6276 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t c);
6277 static int32_t herotile_land_walk_list[] =
6278 {
6279 // dialog control number
6280 11, 12, 13, 14, 15, 16, 17, 18, -1
6281 };
6282
6283 static int32_t herotile_land_slash_list[] =
6284 {
6285 // dialog control number
6286 19, 20, 21, 22, 23, 24, 25, 26, -1
6287 };
6288
6289 static int32_t herotile_land_stab_list[] =
6290 {
6291 // dialog control number
6292 27, 28, 29, 30, 31, 32, 33, 34, -1
6293 };
6294
6295 static int32_t herotile_land_pound_list[] =
6296 {
6297 // dialog control number
6298 35, 36, 37, 38, 39, 40, 41, 42, -1
6299 };
6300
6301 static int32_t herotile_land_hold_list[] =
6302 {
6303 // dialog control number
6304 43, 44, 45, 46, -1
6305 };
6306
6307 static int32_t herotile_land_cast_list[] =
6308 {
6309 // dialog control number
6310 47, -1
6311 };
6312
6313 static int32_t herotile_land_fall_list[] =
6314 {
6315 // dialog control number
6316 105, 106, 107, 108, 109, 110, 111, 112, -1
6317 };
6318
6319 static int32_t herotile_land_liftwalk_list[] =
6320 {
6321 // dialog control number
6322 260, 261, 262, 263, 264, 265, 266, 267, -1
6323 };
6324 static int32_t herotile_land_lift_list[] =
6325 {
6326 // dialog control number
6327 268, 269, 270, 271, 272, 273, 274, 275,
6328 276, 277, 278, 279, 280, 281, 282, 283,
6329 284, 285, -1
6330 };
6331
6332 static int32_t herotile_land_jump_list[] =
6333 {
6334 // dialog control number
6335 77, 78, 79, 80, 81, 82, 83, 84, -1
6336 };
6337
6338 static int32_t herotile_land_charge_list[] =
6339 {
6340 // dialog control number
6341 85, 86, 87, 88, 89, 90, 91, 92, -1
6342 };
6343
6344 static int32_t herotile_land_revslash_list[] =
6345 {
6346 // dialog control number
6347 252, 253, 254, 255, 256, 257, 258, 259, -1
6348 };
6349
6350 static TABPANEL herotile_land_tabs[] =
6351 {
6352 // (text)
6353 { (char *)"Walk", D_SELECTED, herotile_land_walk_list, 0, NULL },
6354 { (char *)"Slash", 0, herotile_land_slash_list, 0, NULL },
6355 { (char *)"Slash 2", 0, herotile_land_revslash_list, 0, NULL },
6356 { (char *)"Stab", 0, herotile_land_stab_list, 0, NULL },
6357 { (char *)"Pound", 0, herotile_land_pound_list, 0, NULL },
6358 { (char *)"Jump", 0, herotile_land_jump_list, 0, NULL },
6359 { (char *)"Charge", 0, herotile_land_charge_list, 0, NULL },
6360 { (char *)"Hold", 0, herotile_land_hold_list, 0, NULL },
6361 { (char *)"Cast", 0, herotile_land_cast_list, 0, NULL },
6362 { (char *)"Falling", 0, herotile_land_fall_list, 0, NULL },
6363 { (char *)"Lifting", 0, herotile_land_lift_list, 0, NULL },
6364 { (char *)"Lift+Walk", 0, herotile_land_liftwalk_list, 0, NULL },
6365 { NULL, 0, NULL, 0, NULL }
6366 };
6367
6368 static int32_t herotile_water_float_list[] =
6369 {
6370 // dialog control number
6371 48, 49, 50, 51, 52, 53, 54, 55, -1
6372 };
6373
6374 static int32_t herotile_water_swim_list[] =
6375 {
6376 // dialog control number
6377 56, 57, 58, 59, 60, 61, 62, 63, -1
6378 };
6379
6380 static int32_t herotile_water_dive_list[] =
6381 {
6382 // dialog control number
6383 64, 65, 66, 67, 68, 69, 70, 71, -1
6384 };
6385
6386 static int32_t herotile_water_hold_list[] =
6387 {
6388 // dialog control number
6389 72, 73, 74, 75, -1
6390 };
6391
6392 static int32_t herotile_water_drown_list[] =
6393 {
6394 // dialog control number
6395 97, 98, 99, 100, 101, 102, 103, 104, -1
6396 };
6397
6398 static int32_t herotile_lava_drown_list[] =
6399 {
6400 // dialog control number
6401 113, 114, 115, 116, 117, 118, 119, 120, -1
6402 };
6403
6404 static TABPANEL herotile_water_tabs[] =
6405 {
6406 // (text)
6407 { (char *)"Float", D_SELECTED, herotile_water_float_list, 0, NULL },
6408 { (char *)"Swim", 0, herotile_water_swim_list, 0, NULL },
6409 { (char *)"Dive", 0, herotile_water_dive_list, 0, NULL },
6410 { (char *)"Drown", 0, herotile_water_drown_list, 0, NULL },
6411 { (char *)"Hold", 0, herotile_water_hold_list, 0, NULL },
6412 { (char *)"Lava Drown", 0, herotile_lava_drown_list, 0, NULL },
6413 { NULL, 0, NULL, 0, NULL }
6414 };
6415
6416 static int32_t herotile_sidewater_swim_list[] =
6417 {
6418 // dialog control number
6419 196, 197, 198, 199, 200, 201, 202, 203, -1
6420 };
6421
6422 static int32_t herotile_sidewater_slash_list[] =
6423 {
6424 // dialog control number
6425 204, 205, 206, 207, 208, 209, 210, 211, -1
6426 };
6427
6428 static int32_t herotile_sidewater_stab_list[] =
6429 {
6430 // dialog control number
6431 212, 213, 214, 215, 216, 217, 218, 219, -1
6432 };
6433
6434 static int32_t herotile_sidewater_pound_list[] =
6435 {
6436 // dialog control number
6437 220, 221, 222, 223, 224, 225, 226, 227, 236, 237, 238, 239, 240, 241, 242, 243,-1
6438 };
6439
6440 static int32_t herotile_sidewater_charge_list[] =
6441 {
6442 // dialog control number
6443 228, 229, 230, 231, 232, 233, 234, 235, -1
6444 };
6445
6446 static int32_t herotile_sidewater_hold_list[] =
6447 {
6448 // dialog control number
6449 244,245,246,247,248,249,250,251, -1
6450 };
6451
6452 static TABPANEL herotile_sidewater_tabs[] =
6453 {
6454 // (text)
6455 { (char *)"Swim", D_SELECTED, herotile_sidewater_swim_list, 0, NULL },
6456 { (char *)"S. Slash", 0, herotile_sidewater_slash_list, 0, NULL },
6457 { (char *)"S. Stab", 0, herotile_sidewater_stab_list, 0, NULL },
6458 { (char *)"S. Pound", 0, herotile_sidewater_pound_list, 0, NULL },
6459 { (char *)"S. Charge", 0, herotile_sidewater_charge_list, 0, NULL },
6460 { (char *)"S. Misc", 0, herotile_sidewater_hold_list, 0, NULL },
6461 { NULL, 0, NULL, 0, NULL }
6462 };
6463
6464 static int32_t herotile_defense_enemy1_list[] =
6465 {
6466 //dialog control number
6467 122, 123, 124, 125, 126, 127, 128, 129, 130, 145, 146, 147, 148, 149, 150, 151, 152, 153, 168, -1
6468 };
6469
6470 static int32_t herotile_defense_enemy2_list[] =
6471 {
6472 //dialog control number
6473 131, 132, 133, 134, 135, 136, 137, 138, 154, 155, 156, 157, 158, 159, 160, 161, -1
6474 };
6475
6476 static int32_t herotile_defense_other1_list[] =
6477 {
6478 //dialog control number
6479 139, 140, 141, 142, 143, 144, 162, 163, 164, 165, 166, 167, -1
6480 };
6481
6482 static int32_t herotile_defense_script_list[] =
6483 {
6484 //dialog control number
6485 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, -1
6486 };
6487
6488 static TABPANEL herotile_defense_tabs[] =
6489 {
6490 // (text)
6491 { (char*)"Enemy 1", D_SELECTED, herotile_defense_enemy1_list, 0, NULL },
6492 { (char*)"Enemy 2", 0, herotile_defense_enemy2_list, 0, NULL },
6493 { (char*)"Other", 0, herotile_defense_other1_list, 0, NULL },
6494 { (char*)"Script", 0, herotile_defense_script_list, 0, NULL },
6495 { NULL, 0, NULL, 0, NULL }
6496 };
6497
6498
6499 static int32_t herotile_land_list[] =
6500 {
6501 // dialog control number
6502 9, -1
6503 };
6504
6505 static int32_t herotile_water_list[] =
6506 {
6507 // dialog control number
6508 10, -1
6509 };
6510
6511 static int32_t herotile_sidewater_list[] =
6512 {
6513 // dialog control number
6514 195, -1
6515 };
6516
6517 static int32_t herotile_defense_list[] =
6518 {
6519 // dialog control number
6520 121, -1
6521 };
6522
6523 static int32_t herotile_option_list[] =
6524 {
6525 // dialog control number
6526 189, 190, 191, 192, 193, 194, -1
6527 };
6528
6529 static TABPANEL herotile_tabs[] =
6530 {
6531 // (text)
6532 { (char *)"Sprites (Land)", D_SELECTED, herotile_land_list, 0, NULL },
6533 { (char *)"Sprites (Liquid)", 0, herotile_water_list, 0, NULL },
6534 { (char *)"Sprites (Side Liquid)", 0, herotile_sidewater_list, 0, NULL },
6535 { (char *)"Defenses", 0, herotile_defense_list, 0, NULL},
6536 { (char *)"Options", 0, herotile_option_list, 0, NULL },
6537 { NULL, 0, NULL, 0, NULL }
6538 };
6539
6540 const char *animationstyles[las_max]= { "Original", "BS-Zelda", "Zelda 3", "Zelda 3 (Slow Walk)" };
6541
6542 const char *animationstylelist(int32_t index, int32_t *list_size)
6543 {
6544 if(index>=0)
6545 {
6546 return animationstyles[index];
6547 }
6548
6549 *list_size=las_max;
6550 return NULL;
6551 }
6552
6553 const char *swimspeeds[2]= { "Slow", "Fast" };
6554
6555 const char *swimspeedlist(int32_t index, int32_t *list_size)
6556 {
6557 if(index>=0)
6558 {
6559 return swimspeeds[index];
6560 }
6561
6562 *list_size=2;
6563 return NULL;
6564 }
6565
6566 int32_t jwin_as_droplist_proc(int32_t msg,DIALOG *d,int32_t c)
6567 {
6568 int32_t ret = jwin_droplist_proc(msg,d,c);
6569
6570 switch(msg)
6571 {
6572 case MSG_CHAR:
6573 case MSG_CLICK:
6574 zinit.heroAnimationStyle=d->d1;
6575
6576 if(zinit.heroAnimationStyle==las_zelda3slow)
6577 {
6578 hero_animation_speed=2;
6579 }
6580 else
6581 {
6582 hero_animation_speed=1;
6583 }
6584 }
6585
6586 return ret;
6587 }
6588
6589 9 static ListData animationstyle_list(animationstylelist, &font);
6590 9 static ListData swimspeed_list(swimspeedlist, &font);
6591
6592 static DIALOG herotile_dlg[] =
6593 {
6594 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3)
6595 9 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, (void *) "Player Sprites", NULL, NULL },
6596 9 { d_vsync_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6597 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F1, 0, (void *) onHelp, NULL, NULL },
6598 9 { jwin_button_proc, 90, 220, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
6599 9 { jwin_button_proc, 170, 220, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
6600 // 5
6601 9 { d_dummy_proc, 217, 200, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Large Player Hit Box", NULL, NULL },
6602 9 { d_dummy_proc, 4, 201, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Animation Style:", NULL, NULL },
6603 9 { d_dummy_proc, 77, 197, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &animationstyle_list, NULL, NULL },
6604 9 { jwin_tab_proc, 4, 17, 312, 200, 0, 0, 0, 0, 0, 0, (void *) herotile_tabs, NULL, (void *)herotile_dlg },
6605 // 9
6606 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_land_tabs, NULL, (void *)herotile_dlg },
6607 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_water_tabs, NULL, (void *)herotile_dlg },
6608 // 11 (walk sprite titles)
6609 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6610 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6611 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6612 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6613 // 15 (walk sprites)
6614 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_walk, NULL, NULL, NULL },
6615 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_walk, NULL, NULL, NULL },
6616 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_walk, NULL, NULL, NULL },
6617 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_walk, NULL, NULL, NULL },
6618 // 19 (slash spritetitles)
6619 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6620 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6621 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6622 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6623 // 23 (slash sprites)
6624 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_slash, NULL, NULL, NULL },
6625 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_slash, NULL, NULL, NULL },
6626 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_slash, NULL, NULL, NULL },
6627 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_slash, NULL, NULL, NULL },
6628 // 27 (stab sprite titles)
6629 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6630 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6631 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6632 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6633 // 31 (stab sprites)
6634 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_stab, NULL, NULL, NULL },
6635 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_stab, NULL, NULL, NULL },
6636 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_stab, NULL, NULL, NULL },
6637 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_stab, NULL, NULL, NULL },
6638 // 35 (pound sprite titles)
6639 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6640 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6641 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6642 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6643 // 39 (pound sprites)
6644 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_pound, NULL, NULL, NULL },
6645 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_pound, NULL, NULL, NULL },
6646 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_pound, NULL, NULL, NULL },
6647 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_pound, NULL, NULL, NULL },
6648 // 43 (hold sprite titles)
6649 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6650 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6651 // 45 (hold sprites)
6652 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_landhold1, NULL, NULL, NULL },
6653 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_landhold2, NULL, NULL, NULL },
6654 // 47 (casting sprites)
6655 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_cast, NULL, NULL, NULL },
6656
6657 // 48 (float sprite titles)
6658 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6659 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6660 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6661 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6662 // 52 (float sprites)
6663 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_float, NULL, NULL, NULL },
6664 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_float, NULL, NULL, NULL },
6665 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_float, NULL, NULL, NULL },
6666 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_float, NULL, NULL, NULL },
6667 // 56 (swim sprite titles)
6668 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6669 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6670 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6671 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6672 // 60 (swim sprites)
6673 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_swim, NULL, NULL, NULL },
6674 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_swim, NULL, NULL, NULL },
6675 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_swim, NULL, NULL, NULL },
6676 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_swim, NULL, NULL, NULL },
6677 // 64 (dive sprite titles)
6678 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6679 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6680 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6681 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6682 // 68 (dive sprites)
6683 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_dive, NULL, NULL, NULL },
6684 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_dive, NULL, NULL, NULL },
6685 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_dive, NULL, NULL, NULL },
6686 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_dive, NULL, NULL, NULL },
6687 // 72 (hold sprite titles)
6688 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6689 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6690 // 74 (hold sprites)
6691 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_waterhold1, NULL, NULL, NULL },
6692 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_waterhold2, NULL, NULL, NULL },
6693 9 { d_dummy_proc, 217, 186, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Diagonal Movement", NULL, NULL },
6694 // 77 (jump sprite titles)
6695 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6696 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6697 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6698 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6699 // 81 (jump sprites)
6700 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_jump, NULL, NULL, NULL },
6701 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_jump, NULL, NULL, NULL },
6702 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_jump, NULL, NULL, NULL },
6703 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_jump, NULL, NULL, NULL },
6704 // 85 (charge sprite titles)
6705 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6706 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6707 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6708 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6709 // 89 (charge sprites)
6710 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_charge, NULL, NULL, NULL },
6711 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_charge, NULL, NULL, NULL },
6712 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_charge, NULL, NULL, NULL },
6713 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_charge, NULL, NULL, NULL },
6714 // 93
6715 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6716 9 { d_dummy_proc, 4, 183, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Swim Speed:", NULL, NULL },
6717 9 { d_dummy_proc, 77, 179, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &swimspeed_list, NULL, NULL },
6718 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
6719 // 97 (drown sprite titles)
6720 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6721 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6722 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6723 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6724 // 101 (drown sprites)
6725 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_drown, NULL, NULL, NULL },
6726 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_drown, NULL, NULL, NULL },
6727 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_drown, NULL, NULL, NULL },
6728 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_drown, NULL, NULL, NULL },
6729 // 105 (falling sprite titles)
6730 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6731 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6732 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6733 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6734 // 109 (falling sprites)
6735 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_falling, NULL, NULL, NULL },
6736 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_falling, NULL, NULL, NULL },
6737 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_falling, NULL, NULL, NULL },
6738 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_falling, NULL, NULL, NULL },
6739
6740 // 113 (lavadrown sprite titles)
6741 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6742 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6743 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6744 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6745 // 117 (lavadrown sprites)
6746 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lavadrown, NULL, NULL, NULL },
6747 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lavadrown, NULL, NULL, NULL },
6748 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lavadrown, NULL, NULL, NULL },
6749 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lavadrown, NULL, NULL, NULL },
6750
6751 // DEFENSE TAB BEGINS
6752 // 121 (Player defenses)
6753 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void*)herotile_defense_tabs, NULL, (void*)herotile_dlg },
6754 // 122 - Enemy weapons (currently 17)
6755 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball Defense:", NULL, NULL },
6756 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Arrow Defense:", NULL, NULL },
6757 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Boomerang Defense:", NULL, NULL },
6758 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Sword Beam Defense:", NULL, NULL },
6759 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Rock Defense:", NULL, NULL },
6760 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Magic Defense:", NULL, NULL },
6761 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (object) Defense:", NULL, NULL },
6762 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (object) Defense:", NULL, NULL },
6763 9 { jwin_text_proc, 9, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (explode) Defense:", NULL, NULL },
6764 // 131 - Enemy weapons page 2
6765 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (explode) Defense:", NULL, NULL },
6766 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Trail Defense:", NULL, NULL },
6767 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Defense:", NULL, NULL },
6768 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Wind Defense:", NULL, NULL },
6769 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Defense:", NULL, NULL },
6770 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Trail Defense:", NULL, NULL },
6771 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Ice Defense:", NULL, NULL },
6772 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball 2 Defense:", NULL, NULL },
6773 // 139 - Other weapons (Currently 6)
6774 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Candle Fire Defense:", NULL, NULL },
6775 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Player Bomb Defense:", NULL, NULL },
6776 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Magic Defense:", NULL, NULL },
6777 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Fireball Defense:", NULL, NULL },
6778 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Rock Defense:", NULL, NULL },
6779 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Sword Beam Defense:", NULL, NULL },
6780 // 145 - Enemy weapons pulldown
6781 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6782 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6783 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6784 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6785 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6786 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6787 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6788 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6789 9 { jwin_droplist_proc, 126, 198 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6790 // 154 - Enemy weapons pulldown page 2
6791 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6792 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6793 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6794 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6795 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6796 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6797 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6798 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6799 // 162 - Other weapon pulldown
6800 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6801 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6802 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6803 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6804 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6805 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6806 // 168 - Set all button
6807 9 { jwin_button_proc, 255, 54 - 4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"Set All", NULL, NULL },
6808
6809
6810 // 169 - Script 1
6811 9 { jwin_text_proc, 9, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 1 Defense:", NULL, NULL },
6812 9 { jwin_text_proc, 9, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 2 Defense:", NULL, NULL },
6813 9 { jwin_text_proc, 9, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 3 Defense:", NULL, NULL },
6814 9 { jwin_text_proc, 9, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 4 Defense:", NULL, NULL },
6815 9 { jwin_text_proc, 9, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 5 Defense:", NULL, NULL },
6816 9 { jwin_text_proc, 9, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 6 Defense:", NULL, NULL },
6817 9 { jwin_text_proc, 9, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 7 Defense:", NULL, NULL },
6818 9 { jwin_text_proc, 9, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 8 Defense:", NULL, NULL },
6819 9 { jwin_text_proc, 9, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 9 Defense:", NULL, NULL },
6820 9 { jwin_text_proc, 9, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 10 Defense:", NULL, NULL },
6821 //179 script 1 pulldown
6822
6823 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
6824 9 { jwin_droplist_proc, 126, 51 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6825 9 { jwin_droplist_proc, 126, 67 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6826 9 { jwin_droplist_proc, 126, 83 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6827 9 { jwin_droplist_proc, 126, 99 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6828 9 { jwin_droplist_proc, 126, 115 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6829 9 { jwin_droplist_proc, 126, 131 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6830 9 { jwin_droplist_proc, 126, 147 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6831 9 { jwin_droplist_proc, 126, 163 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6832 9 { jwin_droplist_proc, 126, 179 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6833 9 { jwin_droplist_proc, 126, 196 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6834 // 189 - Options relocated to handle new tab
6835 9 { jwin_check_proc, 9, 78, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Large Player Hit Box", NULL, NULL },
6836 9 { jwin_text_proc, 9, 38, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Animation Style:", NULL, NULL },
6837 9 { jwin_as_droplist_proc, 89, 34, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&animationstyle_list, NULL, NULL },
6838 9 { jwin_check_proc, 9, 90, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Diagonal Movement", NULL, NULL },
6839 9 { jwin_text_proc, 9, 54, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Swim Speed:", NULL, NULL },
6840 9 { jwin_droplist_proc, 89, 50, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&swimspeed_list, NULL, NULL },
6841 //195 Sideview water tab
6842 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_sidewater_tabs, NULL, (void *)herotile_dlg },
6843 // 196 (sideswim sprite titles)
6844 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6845 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6846 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6847 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6848 // 200 (sideswim sprites)
6849 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswim, NULL, NULL, NULL },
6850 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswim, NULL, NULL, NULL },
6851 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswim, NULL, NULL, NULL },
6852 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswim, NULL, NULL, NULL },
6853 // 204 (sideswim slash sprite titles)
6854 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6855 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6856 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6857 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6858 // 208 (sideswim slash sprites)
6859 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimslash, NULL, NULL, NULL },
6860 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimslash, NULL, NULL, NULL },
6861 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimslash, NULL, NULL, NULL },
6862 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimslash, NULL, NULL, NULL },
6863 // 212 (sideswim stab sprite titles)
6864 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6865 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6866 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6867 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6868 // 216 (sideswim stab sprites)
6869 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimstab, NULL, NULL, NULL },
6870 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimstab, NULL, NULL, NULL },
6871 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimstab, NULL, NULL, NULL },
6872 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimstab, NULL, NULL, NULL },
6873 // 220 (sideswim pound sprite titles)
6874 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6875 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6876 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6877 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6878 // 224 (sideswim pound sprites)
6879 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimpound, NULL, NULL, NULL },
6880 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimpound, NULL, NULL, NULL },
6881 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimpound, NULL, NULL, NULL },
6882 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimpound, NULL, NULL, NULL },
6883 // 228 (sideswim charge sprite titles)
6884 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6885 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6886 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6887 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6888 // 232 (sideswim charge sprites)
6889 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcharge, NULL, NULL, NULL },
6890 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimcharge, NULL, NULL, NULL },
6891 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimcharge, NULL, NULL, NULL },
6892 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimcharge, NULL, NULL, NULL },
6893 // 236 (swim hammer offset titles)
6894 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6895 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6896 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6897 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6898 // 240 (swim hammer offset fields)
6899 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6900 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6901 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6902 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6903 // 244 (hold sprite titles)
6904 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "1 Hand", NULL, NULL },
6905 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Casting", NULL, NULL },
6906 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "2 Hands", NULL, NULL },
6907 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Drown", NULL, NULL },
6908 // 248 (hold sprites)
6909 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sidewaterhold1, NULL, NULL, NULL },
6910 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcast, NULL, NULL, NULL },
6911 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sidewaterhold2, NULL, NULL, NULL },
6912 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sidedrown, NULL, NULL, NULL },
6913 // 252 (revslash sprite titles)
6914 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6915 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6916 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6917 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6918 // 256 (revslash sprites)
6919 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_revslash, NULL, NULL, NULL },
6920 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_revslash, NULL, NULL, NULL },
6921 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_revslash, NULL, NULL, NULL },
6922 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_revslash, NULL, NULL, NULL },
6923 // 260 (lifting)
6924 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6925 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6926 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6927 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6928 // 264 (lift sprites)
6929 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_liftwalk, NULL, NULL, NULL },
6930 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_liftwalk, NULL, NULL, NULL },
6931 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_liftwalk, NULL, NULL, NULL },
6932 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_liftwalk, NULL, NULL, NULL },
6933 // 268 (lifting)
6934 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6935 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6936 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6937 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6938 // 272 (lift sprites)
6939 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lifting, NULL, NULL, NULL },
6940 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lifting, NULL, NULL, NULL },
6941 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lifting, NULL, NULL, NULL },
6942 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lifting, NULL, NULL, NULL },
6943 // 276 (lift frame count labels)
6944 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6945 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6946 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6947 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6948 // 280 (lift frame count fields)
6949 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6950 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6951 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6952 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6953 // 284 (lift speed preview value)
6954 9 { jwin_rtext_proc, 60, 58, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Preview Speed", NULL, NULL },
6955 9 { jwin_edit_proc, 63, 55, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6956
6957 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
6958
6959 };
6960
6961 static char liftspeed[4] = "4";
6962 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t)
6963 {
6964 //d1=dir
6965 //d2=type (determines how to animate)
6966 //fg=cset (6)
6967 enum {lt_clock, lt_tile, lt_flip, lt_extend, lt_frames};
6968 static int32_t bg=makecol(0, 0, 0);
6969 int32_t *p=(int32_t*)d->dp3;
6970 int32_t oldtile=0;
6971 int32_t oldflip=0;
6972
6973 switch(msg)
6974 {
6975 case MSG_START:
6976 {
6977 d->dp3=(int32_t*)malloc(sizeof(int32_t)*5);
6978 p=(int32_t*)d->dp3;
6979 p[lt_clock]=0;
6980 p[lt_tile]=0;
6981 p[lt_flip]=0;
6982 p[lt_extend]=0;
6983 p[lt_frames]=0;
6984 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
6985 if(d->d2 == ls_lifting)
6986 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
6987 break;
6988 }
6989
6990 case MSG_CLICK:
6991 {
6992 int32_t t;
6993 int32_t f;
6994 int32_t extend;
6995 int32_t cs = 6;
6996 herotile(&t, &f, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
6997
6998 switch(extend)
6999 {
7000 case 0:
7001 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+32+8+2, d->y+(16+32)+2))
7002 {
7003 return D_O_K;
7004 }
7005
7006 break;
7007
7008 case 1:
7009 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+(32)+8+2, d->y+(4+64)+2))
7010 {
7011 return D_O_K;
7012 }
7013
7014 break;
7015
7016 case 2:
7017 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+4, d->x+(64)+8+2, d->y+(4+64)+2))
7018 {
7019 return D_O_K;
7020 }
7021
7022 break;
7023 }
7024
7025 if((CHECK_CTRL_CMD)
7026 ? select_tile_2(t,f,2,cs,false,extend,true)
7027 : select_tile(t,f,2,cs,false,extend,true))
7028 {
7029 extend=ex;
7030 setherotile(t,f,extend,d->d2,d->d1);
7031 return D_REDRAW;
7032 }
7033 }
7034 break;
7035
7036 case MSG_VSYNC:
7037 {
7038 oldtile=p[lt_tile];
7039 oldflip=p[lt_flip];
7040 p[lt_clock]++;
7041 auto lspeed = vbound(atoi(liftspeed),1,255);
7042 if(d->d2 == ls_lifting)
7043 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
7044
7045 switch(zinit.heroAnimationStyle)
7046 {
7047 case las_original: //2-frame
7048 switch(d->d2)
7049 {
7050 case ls_charge:
7051 case ls_walk:
7052 {
7053 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7054
7055 if(p[lt_clock]>=6)
7056 {
7057 if(d->d1==up&&d->d2==ls_walk)
7058 {
7059 p[lt_flip]=1; //h flip
7060 }
7061 else
7062 {
7063 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7064 }
7065 };
7066
7067 if(p[lt_clock]>=11)
7068 {
7069 p[lt_clock]=-1;
7070 }
7071
7072 break;
7073 }
7074
7075 case ls_sideswim:
7076 case ls_sideswimcharge:
7077 {
7078 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7079
7080 if(p[lt_clock]>=6)
7081 {
7082 if(d->d1==up&&d->d2==ls_sideswim)
7083 {
7084 p[lt_flip]=1; //h flip
7085 }
7086 else
7087 {
7088 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7089 }
7090 };
7091
7092 if(p[lt_clock]>=11)
7093 {
7094 p[lt_clock]=-1;
7095 }
7096
7097 break;
7098 }
7099
7100 case ls_sideswimslash:
7101 {
7102 if(p[lt_clock]<6)
7103 {
7104 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7105 }
7106 else if(p[lt_clock]<12)
7107 {
7108 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7109 }
7110 else if(p[lt_clock]<13)
7111 {
7112 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7113 }
7114 else
7115 {
7116 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7117 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7118
7119 if(p[lt_clock]>=16)
7120 {
7121 p[lt_clock]=-1;
7122 }
7123 };
7124
7125 break;
7126 }
7127
7128 case ls_sideswimstab:
7129 {
7130 if(p[lt_clock]<12)
7131 {
7132 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7133 }
7134 else if(p[lt_clock]<13)
7135 {
7136 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7137 }
7138 else
7139 {
7140 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7141 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7142
7143 if(p[lt_clock]>=16)
7144 {
7145 p[lt_clock]=-1;
7146 }
7147 };
7148
7149 break;
7150 }
7151
7152 case ls_sideswimpound:
7153 {
7154 if(p[lt_clock]<12)
7155 {
7156 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7157 }
7158 else if(p[lt_clock]<30)
7159 {
7160 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7161 }
7162 else
7163 {
7164 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7165
7166 if(p[lt_clock]>=31)
7167 {
7168 p[lt_clock]=-1;
7169 }
7170 };
7171
7172 break;
7173 }
7174
7175 case ls_jump:
7176 {
7177 if(p[lt_clock]>=24)
7178 {
7179 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7180
7181 if(p[lt_clock]>=36)
7182 {
7183 p[lt_clock]=-1;
7184 }
7185 }
7186 else
7187 {
7188 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7189 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7190 }
7191
7192 break;
7193 }
7194
7195 case ls_slash:
7196 {
7197 if(p[lt_clock]<6)
7198 {
7199 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7200 }
7201 else if(p[lt_clock]<12)
7202 {
7203 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7204 }
7205 else if(p[lt_clock]<13)
7206 {
7207 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7208 }
7209 else
7210 {
7211 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7212 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7213
7214 if(p[lt_clock]>=16)
7215 {
7216 p[lt_clock]=-1;
7217 }
7218 };
7219
7220 break;
7221 }
7222
7223 case ls_revslash:
7224 {
7225 if(p[lt_clock]<6)
7226 {
7227 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7228 }
7229 else if(p[lt_clock]<12)
7230 {
7231 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7232 }
7233 else if(p[lt_clock]<13)
7234 {
7235 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7236 }
7237 else
7238 {
7239 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7240 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7241
7242 if(p[lt_clock]>=16)
7243 {
7244 p[lt_clock]=-1;
7245 }
7246 };
7247
7248 break;
7249 }
7250
7251 case ls_stab:
7252 {
7253 if(p[lt_clock]<12)
7254 {
7255 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7256 }
7257 else if(p[lt_clock]<13)
7258 {
7259 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7260 }
7261 else
7262 {
7263 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7264 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7265
7266 if(p[lt_clock]>=16)
7267 {
7268 p[lt_clock]=-1;
7269 }
7270 };
7271
7272 break;
7273 }
7274
7275 case ls_pound:
7276 {
7277 if(p[lt_clock]<12)
7278 {
7279 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7280 }
7281 else if(p[lt_clock]<30)
7282 {
7283 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7284 }
7285 else
7286 {
7287 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7288
7289 if(p[lt_clock]>=31)
7290 {
7291 p[lt_clock]=-1;
7292 }
7293 };
7294
7295 break;
7296 }
7297
7298 case ls_float:
7299 {
7300 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7301
7302 if(p[lt_clock]>=12)
7303 {
7304 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7305 };
7306
7307 if(p[lt_clock]>=23)
7308 {
7309 p[lt_clock]=-1;
7310 }
7311
7312 break;
7313 }
7314
7315 case ls_swim:
7316 {
7317 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7318
7319 if(p[lt_clock]>=12)
7320 {
7321 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7322 };
7323
7324 if(p[lt_clock]>=23)
7325 {
7326 p[lt_clock]=-1;
7327 }
7328
7329 break;
7330 }
7331
7332 case ls_dive:
7333 {
7334 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7335
7336 if(p[lt_clock]>=50)
7337 {
7338 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7339 };
7340
7341 if((p[lt_clock]/12)&1)
7342 {
7343 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7344 };
7345
7346 if(p[lt_clock]>=81)
7347 {
7348 p[lt_clock]=-1;
7349 }
7350
7351 break;
7352 }
7353
7354 case ls_drown:
7355 {
7356 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7357
7358 if(p[lt_clock]<=4)
7359 {
7360 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7361 };
7362
7363 if((p[lt_clock]/12)&1)
7364 {
7365 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7366 };
7367
7368 if(p[lt_clock]>=81)
7369 {
7370 p[lt_clock]=-1;
7371 }
7372
7373 break;
7374 }
7375 case ls_sidedrown:
7376 {
7377 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7378
7379
7380 if((p[lt_clock]/12)&1)
7381 {
7382 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7383 };
7384
7385 if(p[lt_clock]>=81)
7386 {
7387 p[lt_clock]=-1;
7388 }
7389
7390 if(p[lt_clock]<=4)
7391 {
7392 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7393 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7394 };
7395 break;
7396 }
7397
7398 case ls_lavadrown:
7399 {
7400 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7401
7402 if(p[lt_clock]<=4)
7403 {
7404 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7405 };
7406
7407 if((p[lt_clock]/12)&1)
7408 {
7409 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7410 };
7411
7412 if(p[lt_clock]>=81)
7413 {
7414 p[lt_clock]=-1;
7415 }
7416
7417 break;
7418 }
7419
7420 case ls_falling:
7421 {
7422 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7423 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7424 break;
7425 }
7426
7427 case ls_landhold1:
7428 {
7429 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7430 break;
7431 }
7432
7433 case ls_landhold2:
7434 {
7435 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7436 break;
7437 }
7438
7439 case ls_waterhold1:
7440 {
7441 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7442 break;
7443 }
7444
7445 case ls_waterhold2:
7446 {
7447 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7448 break;
7449 }
7450
7451 case ls_sidewaterhold1:
7452 {
7453 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7454 break;
7455 }
7456
7457 case ls_sidewaterhold2:
7458 {
7459 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7460 break;
7461 }
7462
7463 case ls_cast:
7464 {
7465 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7466
7467 if(p[lt_clock]<96)
7468 {
7469 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7470 };
7471
7472 if(p[lt_clock]>=194)
7473 {
7474 p[lt_clock]=-1;
7475 }
7476
7477 break;
7478 }
7479
7480 case ls_sideswimcast:
7481 {
7482 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7483
7484 if(p[lt_clock]<96)
7485 {
7486 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7487 };
7488
7489 if(p[lt_clock]>=194)
7490 {
7491 p[lt_clock]=-1;
7492 }
7493
7494 break;
7495 }
7496
7497 case ls_lifting:
7498 {
7499 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7500 size_t fr = p[lt_clock] / lspeed;
7501 if(fr >= p[lt_frames])
7502 {
7503 fr = 0;
7504 p[lt_clock] = -1;
7505 }
7506 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7507 break;
7508 }
7509 case ls_liftwalk:
7510 {
7511 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7512 if(p[lt_clock]>=6)
7513 {
7514 if(d->d1==up)
7515 {
7516 p[lt_flip]=1; //h flip
7517 }
7518 else
7519 {
7520 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7521 }
7522 };
7523
7524 if(p[lt_clock]>=11)
7525 {
7526 p[lt_clock]=-1;
7527 }
7528 break;
7529 }
7530
7531 default:
7532 break;
7533 }
7534
7535 break;
7536
7537 case las_bszelda: //3-frame BS
7538 switch(d->d2)
7539 {
7540 case ls_charge:
7541 case ls_walk:
7542 {
7543 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7544 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7545
7546 if(p[lt_clock]>=27)
7547 {
7548 p[lt_clock]=-1;
7549 }
7550
7551 break;
7552 }
7553
7554 case ls_sideswim:
7555 case ls_sideswimcharge:
7556 {
7557 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7558 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7559
7560 if(p[lt_clock]>=27)
7561 {
7562 p[lt_clock]=-1;
7563 }
7564
7565 break;
7566 }
7567
7568 case ls_sideswimslash:
7569 {
7570 if(p[lt_clock]<6)
7571 {
7572 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7573 }
7574 else if(p[lt_clock]<12)
7575 {
7576 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7577 }
7578 else if(p[lt_clock]<13)
7579 {
7580 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7581 }
7582 else
7583 {
7584 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7585 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7586
7587 if(p[lt_clock]>=16)
7588 {
7589 p[lt_clock]=-1;
7590 }
7591 };
7592
7593 break;
7594 }
7595
7596 case ls_sideswimstab:
7597 {
7598 if(p[lt_clock]<12)
7599 {
7600 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7601 }
7602 else if(p[lt_clock]<13)
7603 {
7604 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7605 }
7606 else
7607 {
7608 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7609 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7610
7611 if(p[lt_clock]>=16)
7612 {
7613 p[lt_clock]=-1;
7614 }
7615 };
7616
7617 break;
7618 }
7619
7620 case ls_sideswimpound:
7621 {
7622 if(p[lt_clock]<12)
7623 {
7624 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7625 }
7626 else if(p[lt_clock]<30)
7627 {
7628 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7629 }
7630 else
7631 {
7632 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7633
7634 if(p[lt_clock]>=31)
7635 {
7636 p[lt_clock]=-1;
7637 }
7638 };
7639
7640 break;
7641 }
7642
7643 case ls_jump:
7644 {
7645 if(p[lt_clock]>=24)
7646 {
7647 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7648
7649 if(p[lt_clock]>=36)
7650 {
7651 p[lt_clock]=-1;
7652 }
7653 }
7654 else
7655 {
7656 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7657 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7658 }
7659
7660 break;
7661 }
7662
7663 case ls_slash:
7664 {
7665 if(p[lt_clock]<6)
7666 {
7667 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7668 }
7669 else if(p[lt_clock]<12)
7670 {
7671 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7672 }
7673 else if(p[lt_clock]<13)
7674 {
7675 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7676 }
7677 else
7678 {
7679 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7680 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7681
7682 if(p[lt_clock]>=16)
7683 {
7684 p[lt_clock]=-1;
7685 }
7686 };
7687
7688 break;
7689 }
7690
7691 case ls_revslash:
7692 {
7693 if(p[lt_clock]<6)
7694 {
7695 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7696 }
7697 else if(p[lt_clock]<12)
7698 {
7699 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7700 }
7701 else if(p[lt_clock]<13)
7702 {
7703 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7704 }
7705 else
7706 {
7707 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7708 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7709
7710 if(p[lt_clock]>=16)
7711 {
7712 p[lt_clock]=-1;
7713 }
7714 };
7715
7716 break;
7717 }
7718
7719 case ls_stab:
7720 {
7721 if(p[lt_clock]<12)
7722 {
7723 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7724 }
7725 else if(p[lt_clock]<13)
7726 {
7727 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7728 }
7729 else
7730 {
7731 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7732 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7733
7734 if(p[lt_clock]>=16)
7735 {
7736 p[lt_clock]=-1;
7737 }
7738 };
7739
7740 break;
7741 }
7742
7743 case ls_pound:
7744 {
7745 if(p[lt_clock]<12)
7746 {
7747 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7748 }
7749 else if(p[lt_clock]<30)
7750 {
7751 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7752 }
7753 else
7754 {
7755 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7756
7757 if(p[lt_clock]>=31)
7758 {
7759 p[lt_clock]=-1;
7760 }
7761 };
7762
7763 break;
7764 }
7765
7766 case ls_float:
7767 {
7768 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7769 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7770
7771 if(p[lt_clock]>=55)
7772 {
7773 p[lt_clock]=-1;
7774 }
7775
7776 break;
7777 }
7778
7779 case ls_swim:
7780 {
7781 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7782 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7783
7784 if(p[lt_clock]>=55)
7785 {
7786 p[lt_clock]=-1;
7787 }
7788
7789 break;
7790 }
7791
7792 case ls_dive:
7793 {
7794 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7795
7796 if(p[lt_clock]>=50)
7797 {
7798 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7799 };
7800
7801 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7802
7803 if(p[lt_clock]>=81)
7804 {
7805 p[lt_clock]=-1;
7806 }
7807
7808 break;
7809 }
7810
7811 case ls_drown:
7812 {
7813 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7814
7815 if(p[lt_clock]<=4)
7816 {
7817 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7818 };
7819
7820 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7821
7822 if(p[lt_clock]>=81)
7823 {
7824 p[lt_clock]=-1;
7825 }
7826
7827 break;
7828 }
7829
7830 case ls_sidedrown:
7831 {
7832 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7833 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7834
7835 if(p[lt_clock]<=4)
7836 {
7837 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7838 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7839 };
7840
7841
7842 if(p[lt_clock]>=81)
7843 {
7844 p[lt_clock]=-1;
7845 }
7846
7847 break;
7848 }
7849
7850 case ls_lavadrown:
7851 {
7852 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7853
7854 if(p[lt_clock]<=4)
7855 {
7856 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7857 };
7858
7859 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7860
7861 if(p[lt_clock]>=81)
7862 {
7863 p[lt_clock]=-1;
7864 }
7865
7866 break;
7867 }
7868
7869 case ls_falling:
7870 {
7871 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7872 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7873 break;
7874 }
7875
7876 case ls_landhold1:
7877 {
7878 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7879 break;
7880 }
7881
7882 case ls_landhold2:
7883 {
7884 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7885 break;
7886 }
7887
7888 case ls_waterhold1:
7889 {
7890 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7891 break;
7892 }
7893
7894 case ls_waterhold2:
7895 {
7896 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7897 break;
7898 }
7899
7900 case ls_sidewaterhold1:
7901 {
7902 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7903 break;
7904 }
7905
7906 case ls_sidewaterhold2:
7907 {
7908 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7909 break;
7910 }
7911
7912 case ls_cast:
7913 {
7914 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7915
7916 if(p[lt_clock]<96)
7917 {
7918 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7919 }
7920
7921 if(p[lt_clock]>=194)
7922 {
7923 p[lt_clock]=-1;
7924 }
7925
7926 break;
7927 }
7928
7929 case ls_sideswimcast:
7930 {
7931 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7932
7933 if(p[lt_clock]<96)
7934 {
7935 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7936 };
7937
7938 if(p[lt_clock]>=194)
7939 {
7940 p[lt_clock]=-1;
7941 }
7942
7943 break;
7944 }
7945
7946 case ls_lifting:
7947 {
7948 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7949 size_t fr = p[lt_clock] / lspeed;
7950 if(fr >= p[lt_frames])
7951 {
7952 fr = 0;
7953 p[lt_clock] = -1;
7954 }
7955 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7956 break;
7957 }
7958 case ls_liftwalk:
7959 {
7960 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7961 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7962
7963 if(p[lt_clock]>=27)
7964 {
7965 p[lt_clock]=-1;
7966 }
7967 break;
7968 }
7969
7970 default:
7971 break;
7972 }
7973 break;
7974
7975 case las_zelda3slow: //multi-frame Zelda 3 (slow)
7976 case las_zelda3: //multi-frame Zelda 3
7977 switch(d->d2)
7978 {
7979 case ls_charge:
7980 case ls_walk:
7981 {
7982 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7983
7984 if(p[lt_clock]>=(64*(hero_animation_speed)))
7985 {
7986 p[lt_tile]+=(p[lt_extend]==2?2:1);
7987
7988 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
7989 l-=((l>3)?1:0)+((l>12)?1:0);
7990 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
7991
7992 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
7993 if(p[lt_clock]>=255)
7994 {
7995 p[lt_clock]=-1;
7996 }
7997 }
7998
7999 break;
8000 }
8001 case ls_sideswim:
8002 case ls_sideswimcharge:
8003 {
8004 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
8005
8006 if(p[lt_clock]>=(64*(hero_animation_speed)))
8007 {
8008 p[lt_tile]+=(p[lt_extend]==2?2:1);
8009
8010 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8011 l-=((l>3)?1:0)+((l>12)?1:0);
8012 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8013
8014 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
8015 if(p[lt_clock]>=255)
8016 {
8017 p[lt_clock]=-1;
8018 }
8019 }
8020
8021 break;
8022
8023 case ls_sideswimstab:
8024 {
8025 if(p[lt_clock]>35)
8026 {
8027 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
8028 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8029
8030 if(p[lt_clock]>=47)
8031 {
8032 p[lt_clock]=-1;
8033 }
8034 }
8035 else
8036 {
8037 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8038 }
8039
8040 break;
8041 }
8042
8043 case ls_sideswimslash:
8044 {
8045 if(p[lt_clock]>23)
8046 {
8047 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
8048 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8049
8050 if(p[lt_clock]>=47)
8051 {
8052 p[lt_clock]=-1;
8053 }
8054 }
8055 else
8056 {
8057 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8058 }
8059
8060 break;
8061 }
8062
8063 case ls_sideswimpound:
8064 {
8065 if(p[lt_clock]>35)
8066 {
8067 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
8068 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8069
8070 if(p[lt_clock]>=47)
8071 {
8072 p[lt_clock]=-1;
8073 }
8074 }
8075 else
8076 {
8077 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8078 }
8079
8080 break;
8081 }
8082
8083 case ls_jump:
8084 {
8085 if(p[lt_clock]>=24)
8086 {
8087 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8088
8089 if(p[lt_clock]>=36)
8090 {
8091 p[lt_clock]=-1;
8092 }
8093 }
8094 else
8095 {
8096 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8097 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8098 }
8099
8100 break;
8101 }
8102
8103 case ls_slash:
8104 {
8105 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8106 {
8107 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_slash, d->d1, zinit.heroAnimationStyle);
8108 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8109
8110 if(p[lt_clock]>=47)
8111 {
8112 p[lt_clock]=-1;
8113 }
8114 }
8115 else
8116 {
8117 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8118 }
8119
8120 break;
8121 }
8122
8123 case ls_revslash:
8124 {
8125 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8126 {
8127 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_revslash, d->d1, zinit.heroAnimationStyle);
8128 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8129
8130 if(p[lt_clock]>=47)
8131 {
8132 p[lt_clock]=-1;
8133 }
8134 }
8135 else
8136 {
8137 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8138 }
8139
8140 break;
8141 }
8142
8143 case ls_stab: //12 frames, advances by one every 4 frames, 3 tiles total.
8144 if(p[lt_clock]>35)
8145 {
8146 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_stab, d->d1, zinit.heroAnimationStyle);
8147 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8148
8149 if(p[lt_clock]>=47)
8150 {
8151 p[lt_clock]=-1;
8152 }
8153 }
8154 else
8155 {
8156 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8157 }
8158
8159 break;
8160 }
8161
8162 case ls_pound:
8163 {
8164 if(p[lt_clock]>35)
8165 {
8166 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_pound, d->d1, zinit.heroAnimationStyle);
8167 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8168
8169 if(p[lt_clock]>=47)
8170 {
8171 p[lt_clock]=-1;
8172 }
8173 }
8174 else
8175 {
8176 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8177 }
8178
8179 break;
8180 }
8181
8182 case ls_float:
8183 {
8184 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8185 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8186
8187 if(p[lt_clock]>=23)
8188 {
8189 p[lt_clock]=-1;
8190 }
8191
8192 break;
8193 }
8194
8195 case ls_swim:
8196 {
8197 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
8198 p[lt_tile]+=((p[lt_clock]/12)%4)<<(p[lt_extend]==2?1:0);
8199
8200 if(p[lt_clock]>=47)
8201 {
8202 p[lt_clock]=-1;
8203 }
8204
8205 break;
8206 }
8207
8208 case ls_dive:
8209 {
8210 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
8211
8212 if(p[lt_clock]>=50)
8213 {
8214 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8215 };
8216
8217 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8218
8219 if(p[lt_clock]>=81)
8220 {
8221 p[lt_clock]=-1;
8222 }
8223
8224 break;
8225 }
8226
8227 case ls_drown:
8228 {
8229 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
8230
8231 if(p[lt_clock]<=4)
8232 {
8233 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8234 };
8235
8236 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8237
8238 if(p[lt_clock]>=81)
8239 {
8240 p[lt_clock]=-1;
8241 }
8242
8243 break;
8244 }
8245
8246 case ls_sidedrown:
8247 {
8248 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
8249 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8250
8251 if(p[lt_clock]<=4)
8252 {
8253 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8254 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8255 };
8256
8257
8258 if(p[lt_clock]>=81)
8259 {
8260 p[lt_clock]=-1;
8261 }
8262
8263 break;
8264 }
8265
8266 case ls_lavadrown:
8267 {
8268 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
8269
8270 if(p[lt_clock]<=4)
8271 {
8272 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8273 };
8274
8275 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8276
8277 if(p[lt_clock]>=81)
8278 {
8279 p[lt_clock]=-1;
8280 }
8281
8282 break;
8283 }
8284
8285 case ls_falling:
8286 {
8287 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
8288 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
8289 break;
8290 }
8291
8292 case ls_landhold1:
8293 {
8294 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
8295 break;
8296 }
8297
8298 case ls_landhold2:
8299 {
8300 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8301 break;
8302 }
8303
8304 case ls_waterhold1:
8305 {
8306 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
8307 break;
8308 }
8309
8310 case ls_waterhold2:
8311 {
8312 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
8313 break;
8314 }
8315
8316 case ls_sidewaterhold1:
8317 {
8318 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
8319 break;
8320 }
8321
8322 case ls_sidewaterhold2:
8323 {
8324 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8325 break;
8326 }
8327
8328 case ls_cast:
8329 {
8330 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
8331
8332 if(p[lt_clock]<96)
8333 {
8334 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8335 };
8336
8337 if(p[lt_clock]>=194)
8338 {
8339 p[lt_clock]=-1;
8340 }
8341
8342 break;
8343 }
8344
8345 case ls_sideswimcast:
8346 {
8347 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
8348
8349 if(p[lt_clock]<96)
8350 {
8351 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8352 };
8353
8354 if(p[lt_clock]>=194)
8355 {
8356 p[lt_clock]=-1;
8357 }
8358
8359 break;
8360 }
8361
8362 case ls_lifting:
8363 {
8364 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
8365 size_t fr = p[lt_clock] / lspeed;
8366 if(fr >= p[lt_frames])
8367 {
8368 fr = 0;
8369 p[lt_clock] = -1;
8370 }
8371 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
8372 break;
8373 }
8374 case ls_liftwalk:
8375 {
8376 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
8377
8378 if(p[lt_clock]>=(64*(hero_animation_speed)))
8379 {
8380 p[lt_tile]+=(p[lt_extend]==2?2:1);
8381
8382 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8383 l-=((l>3)?1:0)+((l>12)?1:0);
8384 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8385
8386 if(p[lt_clock]>=255)
8387 {
8388 p[lt_clock]=-1;
8389 }
8390 }
8391 break;
8392 }
8393
8394 default:
8395 break;
8396 }
8397 break;
8398
8399 default:
8400 break;
8401 }
8402
8403 if((p[lt_tile]!=oldtile)||(p[lt_flip]!=oldflip))
8404 {
8405 d->flags|=D_DIRTY;
8406 }
8407
8408 break;
8409 }
8410
8411 case MSG_DRAW:
8412 {
8413 BITMAP *buf=create_bitmap_ex(8,1,1);
8414 BITMAP *buf2=buf;
8415 int32_t dummy1, dummy2;
8416 int32_t extend;
8417 herotile(&dummy1, &dummy2, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
8418 int32_t w = 16;
8419 int32_t h = 16;
8420
8421 switch(extend)
8422 {
8423 case 0: //16x16
8424 break;
8425
8426 case 1: //16x32
8427 w = 16;
8428 h = 32;
8429 break;
8430
8431 case 2: //32x32
8432 w = 32;
8433 h = 32;
8434 break;
8435
8436 default:
8437 break;
8438 }
8439
8440 buf = create_bitmap_ex(8,w,h);
8441
8442 w *= 2;
8443 h *= 2;
8444
8445 BITMAP *bigbmp = create_bitmap_ex(8,w+4,h+4);
8446
8447 if(buf && bigbmp)
8448 {
8449 clear_to_color(buf, bg);
8450
8451 switch(extend)
8452 {
8453 case 0:
8454 overtile16(buf,p[lt_tile],0,0,6,p[lt_flip]);
8455 stretch_blit(buf, bigbmp, 0,0, 16, 16, 2, 2, w, h);
8456 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8457 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8458 break;
8459
8460 case 1:
8461 overtile16(buf,p[lt_tile]-TILES_PER_ROW,0,0,6,p[lt_flip]);
8462 overtile16(buf,p[lt_tile],0,16,6,p[lt_flip]);
8463 stretch_blit(buf, bigbmp, 0,0, 16, 32, 2, 2, w, h);
8464 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8465 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8466 break;
8467
8468 case 2:
8469 overtile16(buf,p[lt_tile]-TILES_PER_ROW,8,0,6,p[lt_flip]); //top middle
8470 overtile16(buf,p[lt_tile]-TILES_PER_ROW-(p[lt_flip]?-1:1),-8,0,6,p[lt_flip]); //top left
8471 overtile16(buf,p[lt_tile]-TILES_PER_ROW+(p[lt_flip]?-1:1),8+16,0,6,p[lt_flip]); //top right
8472 overtile16(buf,p[lt_tile]-(p[lt_flip]?-1:1),-8,16,6,p[lt_flip]); //bottom left
8473 overtile16(buf,p[lt_tile]+(p[lt_flip]?-1:1),8+16,16,6,p[lt_flip]); //bottom right
8474 overtile16(buf,p[lt_tile],8,16,6,p[lt_flip]); //bottom middle
8475 stretch_blit(buf, bigbmp, 0,0, 32, 32, 2, 2, w, h);
8476 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8477 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8478 break;
8479
8480 default:
8481 break;
8482 }
8483
8484 destroy_bitmap(bigbmp);
8485 destroy_bitmap(buf);
8486 destroy_bitmap(buf2);
8487 }
8488 }
8489 break;
8490
8491 case MSG_END:
8492 {
8493 free(d->dp3);
8494 break;
8495 }
8496 }
8497
8498 return D_O_K;
8499 }
8500
8501 int32_t onCustomHero()
8502 {
8503 //setupherotiles(zinit.heroAnimationStyle);
8504 if(zinit.heroAnimationStyle==las_zelda3slow)
8505 {
8506 hero_animation_speed=2;
8507 }
8508 else
8509 {
8510 hero_animation_speed=1;
8511 }
8512
8513 herotile_dlg[0].dp2=get_zc_font(font_lfont);
8514 herotile_dlg[189].flags = get_qr(qr_LTTPCOLLISION)? D_SELECTED : 0;
8515 herotile_dlg[192].flags = get_qr(qr_LTTPWALK)? D_SELECTED : 0;
8516 herotile_dlg[194].d1=(zinit.hero_swim_speed<60)?0:1;
8517 herotile_dlg[191].d1=zinit.heroAnimationStyle;
8518
8519 large_dialog(herotile_dlg, 2.0);
8520
8521 int32_t oldWalkSpr[4][3];
8522 int32_t oldStabSpr[4][3];
8523 int32_t oldSlashSpr[4][3];
8524 int32_t oldRevSlashSpr[4][3];
8525 int32_t oldFloatSpr[4][3];
8526 int32_t oldSwimSpr[4][3];
8527 int32_t oldDiveSpr[4][3];
8528 int32_t oldPoundSpr[4][3];
8529 int32_t oldJumpSpr[4][3];
8530 int32_t oldChargeSpr[4][3];
8531 int32_t oldCastSpr[3];
8532 int32_t oldsideswimCastSpr[3];
8533 int32_t oldHoldSpr[2][3][3];
8534 int32_t oldDrownSpr[4][3];
8535 int32_t oldSideDrownSpr[4][3];
8536 int32_t oldFallSpr[4][3];
8537 int32_t oldLavaDrownSpr[4][3];
8538 int32_t oldSideSwimSpr[4][3];
8539 int32_t oldSideSwimSlashSpr[4][3];
8540 int32_t oldSideSwimStabSpr[4][3];
8541 int32_t oldSideSwimPoundSpr[4][3];
8542 int32_t oldSideSwimChargeSpr[4][3];
8543 int32_t oldSideSwimHoldSpr[3][3];
8544 int32_t oldLiftingSpr[4][4];
8545 int32_t oldLiftingWalkSpr[4][3];
8546 char hmr1[8];
8547 char hmr2[8];
8548 char hmr3[8];
8549 char hmr4[8];
8550 sprintf(hmr1,"%d",hammeroffsets[0]);
8551 sprintf(hmr2,"%d",hammeroffsets[1]);
8552 sprintf(hmr3,"%d",hammeroffsets[2]);
8553 sprintf(hmr4,"%d",hammeroffsets[3]);
8554 herotile_dlg[240].dp = hmr1;
8555 herotile_dlg[241].dp = hmr2;
8556 herotile_dlg[242].dp = hmr3;
8557 herotile_dlg[243].dp = hmr4;
8558 char liftframes1[4];
8559 char liftframes2[4];
8560 char liftframes3[4];
8561 char liftframes4[4];
8562 sprintf(liftframes1,"%d",vbound(liftingspr[0][spr_frames],1,255));
8563 sprintf(liftframes2,"%d",vbound(liftingspr[1][spr_frames],1,255));
8564 sprintf(liftframes3,"%d",vbound(liftingspr[2][spr_frames],1,255));
8565 sprintf(liftframes4,"%d",vbound(liftingspr[3][spr_frames],1,255));
8566 herotile_dlg[280].dp = liftframes1;
8567 herotile_dlg[281].dp = liftframes2;
8568 herotile_dlg[282].dp = liftframes3;
8569 herotile_dlg[283].dp = liftframes4;
8570 herotile_dlg[285].dp = liftspeed;
8571 memcpy(oldWalkSpr, walkspr, 4*3*sizeof(int32_t));
8572 memcpy(oldStabSpr, stabspr, 4*3*sizeof(int32_t));
8573 memcpy(oldSlashSpr, slashspr, 4*3*sizeof(int32_t));
8574 memcpy(oldRevSlashSpr, revslashspr, 4*3*sizeof(int32_t));
8575 memcpy(oldFloatSpr, floatspr, 4*3*sizeof(int32_t));
8576 memcpy(oldSwimSpr, swimspr, 4*3*sizeof(int32_t));
8577 memcpy(oldDiveSpr, divespr, 4*3*sizeof(int32_t));
8578 memcpy(oldPoundSpr, poundspr, 4*3*sizeof(int32_t));
8579 memcpy(oldJumpSpr, jumpspr, 4*3*sizeof(int32_t));
8580 memcpy(oldChargeSpr, chargespr, 4*3*sizeof(int32_t));
8581 memcpy(oldCastSpr, castingspr, 3*sizeof(int32_t));
8582 memcpy(oldsideswimCastSpr, sideswimcastingspr, 3*sizeof(int32_t));
8583 memcpy(oldHoldSpr, holdspr, 2*3*3*sizeof(int32_t));
8584 memcpy(oldDrownSpr, drowningspr, 4*3*sizeof(int32_t));
8585 memcpy(oldSideDrownSpr, sidedrowningspr, 4*3*sizeof(int32_t));
8586 memcpy(oldFallSpr, fallingspr, 4*3*sizeof(int32_t));
8587 memcpy(oldLavaDrownSpr, drowning_lavaspr, 4*3*sizeof(int32_t));
8588 memcpy(oldSideSwimSpr, sideswimspr, 4*3*sizeof(int32_t));
8589 memcpy(oldSideSwimSlashSpr, sideswimslashspr, 4*3*sizeof(int32_t));
8590 memcpy(oldSideSwimStabSpr, sideswimstabspr, 4*3*sizeof(int32_t));
8591 memcpy(oldSideSwimPoundSpr, sideswimpoundspr, 4*3*sizeof(int32_t));
8592 memcpy(oldSideSwimChargeSpr, sideswimchargespr, 4*3*sizeof(int32_t));
8593 memcpy(oldSideSwimHoldSpr, sideswimholdspr, 3*3*sizeof(int32_t));
8594 memcpy(oldLiftingSpr, liftingspr, 4*4*sizeof(int32_t));
8595 memcpy(oldLiftingWalkSpr, liftingwalkspr, 4*3*sizeof(int32_t));
8596
8597 //Populate Player defenses
8598 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8599 {
8600 herotile_dlg[144 + i].d1 = hero_defence[wEnemyWeapons+i];
8601 }
8602 herotile_dlg[154+8].d1 = hero_defence[wFire];
8603 herotile_dlg[155+8].d1 = hero_defence[wBomb];
8604 herotile_dlg[156+8].d1 = hero_defence[wRefMagic];
8605 herotile_dlg[157+8].d1 = hero_defence[wRefFireball];
8606 herotile_dlg[158+8].d1 = hero_defence[wRefRock];
8607 herotile_dlg[159+8].d1 = hero_defence[wRefBeam];
8608
8609 herotile_dlg[171+8].d1 = hero_defence[wScript1];
8610 herotile_dlg[172+8].d1 = hero_defence[wScript2];
8611 herotile_dlg[173+8].d1 = hero_defence[wScript3];
8612 herotile_dlg[174+8].d1 = hero_defence[wScript4];
8613 herotile_dlg[175+8].d1 = hero_defence[wScript5];
8614 herotile_dlg[176+8].d1 = hero_defence[wScript6];
8615 herotile_dlg[177+8].d1 = hero_defence[wScript7];
8616 herotile_dlg[178+8].d1 = hero_defence[wScript8];
8617 herotile_dlg[179+8].d1 = hero_defence[wScript9];
8618 herotile_dlg[180+8].d1 = hero_defence[wScript10];
8619
8620 int32_t ret = 0;
8621 do
8622 {
8623 ret = do_zqdialog(herotile_dlg, 3);
8624
8625 if (ret == 3)
8626 {
8627 saved = false;
8628 set_qr(qr_LTTPCOLLISION, (herotile_dlg[181+8].flags & D_SELECTED) ? 1 : 0);
8629 set_qr(qr_LTTPWALK, (herotile_dlg[184+8].flags & D_SELECTED) ? 1 : 0);
8630 zinit.hero_swim_speed = (herotile_dlg[186+8].d1 == 0) ? 50 : 67;
8631
8632 //Save Player defenses
8633 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8634 {
8635 hero_defence[wEnemyWeapons + i] = herotile_dlg[137 + 7 + i].d1;
8636 }
8637 hero_defence[wFire] = herotile_dlg[154+8].d1;
8638 hero_defence[wBomb] = herotile_dlg[155+8].d1;
8639 hero_defence[wRefMagic] = herotile_dlg[156+8].d1;
8640 hero_defence[wRefFireball] = herotile_dlg[157+8].d1;
8641 hero_defence[wRefRock] = herotile_dlg[158+8].d1;
8642 hero_defence[wRefBeam] = herotile_dlg[159+8].d1;
8643
8644 hero_defence[wScript1] = herotile_dlg[171+8].d1;
8645 hero_defence[wScript2] = herotile_dlg[172+8].d1;
8646 hero_defence[wScript3] = herotile_dlg[173+8].d1;
8647 hero_defence[wScript4] = herotile_dlg[174+8].d1;
8648 hero_defence[wScript5] = herotile_dlg[175+8].d1;
8649 hero_defence[wScript6] = herotile_dlg[176+8].d1;
8650 hero_defence[wScript7] = herotile_dlg[177+8].d1;
8651 hero_defence[wScript8] = herotile_dlg[178+8].d1;
8652 hero_defence[wScript9] = herotile_dlg[179+8].d1;
8653 hero_defence[wScript10] = herotile_dlg[180+8].d1;
8654 hammeroffsets[0] = atoi(hmr1);
8655 hammeroffsets[1] = atoi(hmr2);
8656 hammeroffsets[2] = atoi(hmr3);
8657 hammeroffsets[3] = atoi(hmr4);
8658 liftingspr[0][spr_frames] = vbound(atoi(liftframes1),1,255);
8659 liftingspr[1][spr_frames] = vbound(atoi(liftframes2),1,255);
8660 liftingspr[2][spr_frames] = vbound(atoi(liftframes3),1,255);
8661 liftingspr[3][spr_frames] = vbound(atoi(liftframes4),1,255);
8662 }
8663 else if (ret == 168)
8664 {
8665 for (int32_t i = 146; i < 168; i++)
8666 {
8667 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8668 }
8669 for (int32_t i = 179; i < 189; i++)
8670 {
8671 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8672 }
8673 }
8674 else
8675 {
8676 memcpy(walkspr, oldWalkSpr, 4 * 3 * sizeof(int32_t));
8677 memcpy(stabspr, oldStabSpr, 4 * 3 * sizeof(int32_t));
8678 memcpy(slashspr, oldSlashSpr, 4 * 3 * sizeof(int32_t));
8679 memcpy(revslashspr, oldRevSlashSpr, 4 * 3 * sizeof(int32_t));
8680 memcpy(floatspr, oldFloatSpr, 4 * 3 * sizeof(int32_t));
8681 memcpy(swimspr, oldSwimSpr, 4 * 3 * sizeof(int32_t));
8682 memcpy(divespr, oldDiveSpr, 4 * 3 * sizeof(int32_t));
8683 memcpy(poundspr, oldPoundSpr, 4 * 3 * sizeof(int32_t));
8684 memcpy(jumpspr, oldJumpSpr, 4 * 3 * sizeof(int32_t));
8685 memcpy(chargespr, oldChargeSpr, 4 * 3 * sizeof(int32_t));
8686 memcpy(castingspr, oldCastSpr, 3 * sizeof(int32_t));
8687 memcpy(sideswimcastingspr, oldsideswimCastSpr, 3 * sizeof(int32_t));
8688 memcpy(holdspr, oldHoldSpr, 2*3*3*sizeof(int32_t));
8689 memcpy(drowningspr, oldDrownSpr, 4 * 3 * sizeof(int32_t));
8690 memcpy(sidedrowningspr, oldSideDrownSpr, 4 * 3 * sizeof(int32_t));
8691 memcpy(fallingspr, oldFallSpr, 4 * 3 * sizeof(int32_t));
8692 memcpy(drowning_lavaspr, oldLavaDrownSpr, 4 * 3 * sizeof(int32_t));
8693 memcpy(sideswimspr, oldSideSwimSpr, 4 * 3 * sizeof(int32_t));
8694 memcpy(sideswimslashspr, oldSideSwimSlashSpr, 4 * 3 * sizeof(int32_t));
8695 memcpy(sideswimstabspr, oldSideSwimStabSpr, 4 * 3 * sizeof(int32_t));
8696 memcpy(sideswimpoundspr, oldSideSwimPoundSpr, 4 * 3 * sizeof(int32_t));
8697 memcpy(sideswimchargespr, oldSideSwimChargeSpr, 4 * 3 * sizeof(int32_t));
8698 memcpy(sideswimholdspr, oldSideSwimHoldSpr, 3* 3 * sizeof(int32_t));
8699 memcpy(liftingspr, oldLiftingSpr, 4 * 4 * sizeof(int32_t));
8700 memcpy(liftingwalkspr, oldLiftingWalkSpr, 4 * 3 * sizeof(int32_t));
8701 }
8702 } while (ret == 168);
8703
8704 return D_O_K;
8705 }
8706
8707 6 void center_zq_custom_dialogs()
8708 {
8709 6 jwin_center_dialog(herotile_dlg);
8710 6 jwin_center_dialog(wpndata_dlg);
8711 6 jwin_center_dialog(enedata_dlg);
8712 6 }
8713